@jshookmcp/jshook 0.3.2 → 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/README.md +3 -3
- package/README.zh.md +3 -3
- package/dist/{AntiCheatDetector-B6d4Qe9D.mjs → AntiCheatDetector-CUpZBh5O.mjs} +1 -1
- package/dist/{BrowserSessionCoordinator-BJ-HOxo0.mjs → BrowserSessionCoordinator-QIt3tetp.mjs} +1 -1
- package/dist/CodeInjector-Btj9upnf.mjs +1 -0
- package/dist/{ConsoleMonitor-CxDJV15E.mjs → ConsoleMonitor-DIjN5Afa.mjs} +5 -5
- package/dist/{DarwinAPI-ZfQdpLNI.mjs → DarwinAPI-BuMPGzHm.mjs} +1 -1
- package/dist/DetailedDataManager-Z77fDl9Z.mjs +5 -0
- package/dist/ExtensionManager.tools-CIGOWViz.mjs +1 -0
- package/dist/{FingerprintManager-DT0EAUEo.mjs → FingerprintManager-BkDSsjjP.mjs} +1 -1
- package/dist/{HardwareBreakpoint-BUfPdp0f.mjs → HardwareBreakpoint-DMAMcPyB.mjs} +1 -1
- package/dist/{HeapAnalyzer-B_aqY8oj.mjs → HeapAnalyzer-Yj348FYt.mjs} +1 -1
- package/dist/{ExtensionManager.tools-oVMJgPcN.mjs → MCPServer.activation.ttl-CEGNBycZ.mjs} +1 -1
- package/dist/MCPServer.search.helpers-Cs1JpKbu.mjs +1 -0
- package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
- package/dist/{MemoryController-X1XNSn1n.mjs → MemoryController-DjtgiING.mjs} +1 -1
- package/dist/{MemoryScanSession-DG_F-PjE.mjs → MemoryScanSession-zfoVZJB0.mjs} +1 -1
- package/dist/MemoryScanner-Dxd657li.mjs +1 -0
- package/dist/{NativeMemoryManager.utils-BHy1P_jM.mjs → NativeMemoryManager.utils-Bu8srMEF.mjs} +1 -1
- package/dist/{PEAnalyzer-yWQaGrcx.mjs → PEAnalyzer-CMu9Ua9T.mjs} +1 -1
- package/dist/PointerChainEngine-CaSC1Mry.mjs +1 -0
- package/dist/{ProcessRegistry-C-bN48oR.mjs → ProcessRegistry-D5y1yuP2.mjs} +1 -1
- package/dist/{ReverseEvidenceGraph-BhSYYdiI.mjs → ReverseEvidenceGraph-BksOpsPs.mjs} +1 -1
- package/dist/ServerRuntimeState-CgqBBwfd.mjs +1 -0
- package/dist/{Speedhack-yseDPSZ9.mjs → Speedhack-pwXTHxOY.mjs} +1 -1
- package/dist/{StructureAnalyzer-C5lpuZkg.mjs → StructureAnalyzer-BseGzsSl.mjs} +2 -2
- package/dist/ToolCatalog-DgmQXdsm.mjs +1 -0
- package/dist/ToolHandlerMap-7HWoIgQO.mjs +1 -0
- package/dist/{ToolProbe-C7ZU2x7M.mjs → ToolProbe-DQiREmNp.mjs} +1 -1
- package/dist/{ToolRegistry-C5oB8KP8.mjs → ToolRegistry-eMZEBiR1.mjs} +1 -1
- package/dist/ToolRouter.policy-UKBlFlbh.mjs +4 -0
- package/dist/{TraceRecorder-BiJWBXHX.mjs → TraceRecorder-B5ktv3nP.mjs} +2 -2
- package/dist/VersionDetector-CmPJmaJg.mjs +1 -0
- package/dist/{Win32API-eUCF57l_.mjs → Win32API-DoP3MMHS.mjs} +1 -1
- package/dist/{Win32Debug-CYrIQBvr.mjs → Win32Debug-DwF8mQGm.mjs} +1 -1
- package/dist/{WorkflowEngine-D876meOO.mjs → WorkflowEngine-CldHG5b4.mjs} +1 -1
- package/dist/{analysis-D4swdMvq.mjs → analysis-C-ln0Brh.mjs} +3 -3
- package/dist/antidebug-CsnpOR9z.mjs +1 -0
- package/dist/{artifactRetention-BCPQASm7.mjs → artifactRetention-DkYKLOvi.mjs} +1 -1
- package/dist/{artifacts-CkodUM4j.mjs → artifacts-D-4pSS_N.mjs} +1 -1
- package/dist/{betterSqlite3-Brtq-SIQ.mjs → betterSqlite3-Bdo_ifuJ.mjs} +1 -1
- package/dist/binary-instrument-BeZ224mZ.mjs +9 -0
- package/dist/{boringssl-inspector-BBaJwwkU.mjs → boringssl-inspector-ZOCkaipa.mjs} +2 -2
- package/dist/browser-BUaB25bk.mjs +11 -0
- package/dist/{handlers-yo_xYzT8.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-OeLvmlQy.mjs → definitions-0hxnrDU72.mjs} +1 -1
- package/dist/definitions-B3a9QC2t.mjs +1 -0
- package/dist/{definitions-Ibci7e_L.mjs → definitions-BOvju5t2.mjs} +1 -1
- package/dist/{definitions-D4g-MS10.mjs → definitions-CXj_cEVt.mjs} +1 -1
- package/dist/{definitions-C3qNgSn1.mjs → definitions-Co6AvTjH.mjs} +1 -1
- package/dist/{definitions-DxFNRQNK2.mjs → definitions-Cv5r8xwq.mjs} +1 -1
- package/dist/definitions-DBYSxChX.mjs +1 -0
- package/dist/{definitions-CQd7yCQH.mjs → definitions-D_dTDX9B.mjs} +1 -1
- package/dist/{definitions-l7TjdE6V.mjs → definitions-Db9t2ddh.mjs} +1 -1
- package/dist/{definitions-BWxBke3r.mjs → definitions-DbN2CjI2.mjs} +1 -1
- package/dist/{definitions-DAQm1Xar.mjs → definitions-DlmmHmZc.mjs} +1 -1
- package/dist/{definitions-Bf3H1EwV.mjs → definitions-DnYpoGig.mjs} +1 -1
- package/dist/{definitions-BYwATKc-.mjs → definitions-DtZ6Ktx2.mjs} +1 -1
- package/dist/{definitions-D5wl_8HN.mjs → definitions-DuIPS8gq.mjs} +1 -1
- package/dist/{definitions-RZYGD_Ey.mjs → definitions-DywfwPMb.mjs} +1 -1
- package/dist/definitions-EGmqr85H.mjs +1 -0
- package/dist/{definitions-bybDvnG0.mjs → definitions-Fetw_Cge.mjs} +3 -3
- package/dist/{definitions-CB6vmOer.mjs → definitions-LdkeuOeA.mjs} +1 -1
- package/dist/{definitions-B_83XfNQ.mjs → definitions-Ym8niHDb.mjs} +1 -1
- package/dist/{definitions-Cenu6mxo.mjs → definitions-aeRd5DAR.mjs} +1 -1
- package/dist/{definitions-CT8ln6GQ.mjs → definitions-cnG6tj17.mjs} +1 -1
- package/dist/{encoding-ycOaz8Vr.mjs → encoding-B4xZWErf.mjs} +2 -2
- package/dist/ensure-browser-core-JHwDo5ql.mjs +285 -0
- package/dist/{factory-CKr4fAE1.mjs → factory-BxNdBiZa.mjs} +1 -1
- package/dist/{graphql-B2TiPEow.mjs → graphql-GBWsZ9xC.mjs} +4 -4
- package/dist/{handlers-D5E40ssn.mjs → handlers-5nzR8B0a.mjs} +2 -2
- package/dist/handlers-6iNsXOVT.mjs +7 -0
- package/dist/{handlers-BpDlVVVU.mjs → handlers-BZ8n6Hvf.mjs} +1 -1
- package/dist/{handlers-0yKLRIfo.mjs → handlers-BbLxNbbT.mjs} +1 -1
- package/dist/{handlers-DGbdQAgD.mjs → handlers-BbS4hssc.mjs} +2 -2
- package/dist/{handlers-l8QIKqBj.mjs → handlers-CIKOP4aI.mjs} +2 -2
- package/dist/handlers-CWKBBjai.mjs +1 -0
- package/dist/{handlers-B62K4FTc.mjs → handlers-Cmb6SoRC.mjs} +1 -1
- package/dist/handlers-CrJsKnEI.mjs +1 -0
- package/dist/{antidebug-7L3ygj_9.mjs → handlers-DB6xVVWq.mjs} +2 -2
- package/dist/{handlers-CMJK7m1c.mjs → handlers-DOOCWUNR.mjs} +3 -3
- package/dist/{handlers-D2ZOul9p.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-D9Hh8Bgl.mjs → handlers.impl-BsFTW6SD.mjs} +1 -1
- package/dist/{hooks-D4XLfgtV.mjs → hooks-DPouiS7I.mjs} +9 -9
- package/dist/index.mjs +11 -11
- package/dist/macro-p8kuJVcm.mjs +2 -0
- package/dist/maintenance-DAqADb6Z.mjs +302 -0
- package/dist/manifest-4lmM6MZR.mjs +1 -0
- package/dist/{manifest-DujQqEQR.mjs → manifest-AxaxRSt6.mjs} +2 -2
- package/dist/{manifest-DYpn8w_h.mjs → manifest-BIqRE1Qz.mjs} +1 -1
- package/dist/manifest-Box-jWfr.mjs +1 -0
- package/dist/manifest-Bp33di0Q.mjs +1 -0
- package/dist/{manifest-CQH9FhwI.mjs → manifest-BvRX4nRP.mjs} +1 -1
- package/dist/{manifest-0Jpt_AQa.mjs → manifest-C6KoB1XE.mjs} +1 -1
- package/dist/manifest-C7TdXCWY.mjs +1 -0
- package/dist/manifest-CM-n64K0.mjs +1 -0
- package/dist/{manifest-nXHmtMSp2.mjs → manifest-CUokxCUN.mjs} +1 -1
- package/dist/manifest-CWJS45iO.mjs +1 -0
- package/dist/{manifest-LLdI5m4T.mjs → manifest-Cdxdgo-D.mjs} +1 -1
- package/dist/{manifest-D_obs5F4.mjs → manifest-Cf6SmamD.mjs} +1 -1
- package/dist/manifest-Cgxu2qdv.mjs +1 -0
- package/dist/{manifest-ztWJoXy4.mjs → manifest-CowGSURa2.mjs} +1 -1
- package/dist/{manifest-DYzWI8Xs.mjs → manifest-CsGIrh34.mjs} +1 -1
- package/dist/manifest-CvDpVToN.mjs +1 -0
- package/dist/manifest-D8TL9RLE.mjs +1 -0
- package/dist/{manifest-DCx6w2XV.mjs → manifest-DIhtCBe6.mjs} +1 -1
- package/dist/{manifest-D9jUUJAu.mjs → manifest-DJbruNOg.mjs} +1 -1
- package/dist/manifest-DLGtZH-0.mjs +1 -0
- package/dist/manifest-DXHdPt2T.mjs +1 -0
- package/dist/{manifest-B3fZbSWR.mjs → manifest-Dg5ScOyW.mjs} +1 -1
- package/dist/{manifest-xWfu6iLo.mjs → manifest-DzGoTS0R.mjs} +1 -1
- package/dist/manifest-G2H52LKz.mjs +131 -0
- package/dist/{manifest-CctIumog.mjs → manifest-P0Futrgb.mjs} +1 -1
- package/dist/{manifest-YgVd8Sgz.mjs → manifest-Qw7xgvjv.mjs} +1 -1
- package/dist/{manifest-QYbQXJn0.mjs → manifest-W3qvVrP2.mjs} +1 -1
- package/dist/manifest-dG6MuR1U.mjs +1 -0
- package/dist/manifest-nWXtgq5Y2.mjs +1 -0
- package/dist/{manifest-LG42zPLY2.mjs → manifest-vp1upSSq.mjs} +1 -1
- package/dist/{modules-BPBcSaM-.mjs → modules-DO3jXCgj.mjs} +10 -10
- package/dist/{mojo-ipc-BhwsdVUW.mjs → mojo-ipc-Be-ccWrc.mjs} +1 -1
- 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-Bw413PlW.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-DH4sc1dt.mjs → registry-xB8Wgmyj.mjs} +1 -1
- package/dist/{renderer-pid-9tJnZ_9N.mjs → renderer-pid-7jbTR8f5.mjs} +1 -1
- package/dist/search-defaults-CJik67or.mjs +1 -0
- 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-DOxzeWPB.mjs → transform-D-peM3aO.mjs} +2 -2
- package/dist/{wasm-CZ_HTfKR.mjs → wasm-CZajRaad.mjs} +6 -6
- package/dist/{webcrack-C1iYG_EX.mjs → webcrack-phEfVt5y.mjs} +3 -3
- package/dist/{workflow-BdwQmARn.mjs → workflow-wkXb3x-U.mjs} +3 -3
- package/package.json +2 -2
- package/dist/CodeInjector-Cll_7bLJ.mjs +0 -1
- package/dist/DOMInspector-C19J4zeq.mjs +0 -95
- package/dist/DetailedDataManager-DmQ1LT-W.mjs +0 -1
- package/dist/ExtensionManager-BD724zkO.mjs +0 -1
- package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +0 -1
- package/dist/MemoryScanner-g1_L1ub5.mjs +0 -1
- package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +0 -1
- package/dist/NetworkMonitor-B_-au6aV.mjs +0 -185
- package/dist/PageController-Dfsm1_o7.mjs +0 -1
- package/dist/PointerChainEngine-BhCUkmxY.mjs +0 -1
- package/dist/PrerequisiteError-BjCQA-gK.mjs +0 -1
- package/dist/ScriptManager-LWGPTdvD.mjs +0 -7
- package/dist/ServerRuntimeState-D2bWHqEE.mjs +0 -1
- package/dist/ToolCatalog-CYdD9F5f.mjs +0 -1
- package/dist/ToolRouter.policy-CfhJczkt.mjs +0 -4
- package/dist/VersionDetector-CHT36Az0.mjs +0 -9
- package/dist/apk-packer-BqXcInnX.mjs +0 -1
- package/dist/binary-instrument-DU7V6TUM.mjs +0 -7
- package/dist/binary-secrets-PdMVoyt0.mjs +0 -1
- package/dist/browser-Qqco2rOT.mjs +0 -11
- package/dist/collector-Bpl6qy2L.mjs +0 -1
- package/dist/constants-BYj8Xek8.mjs +0 -1
- package/dist/coordination-CWXW1o8K.mjs +0 -1
- package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
- package/dist/debugger-DyALjYMk.mjs +0 -1
- package/dist/definitions-BftdXgXI.mjs +0 -1
- package/dist/definitions-Bio5XJYy.mjs +0 -1
- package/dist/definitions-CMZRSy3k.mjs +0 -1
- package/dist/definitions-DP1vgxEY.mjs +0 -1
- package/dist/definitions-Tls8c0A0.mjs +0 -1
- package/dist/ensure-browser-core-DxWC-NTp.mjs +0 -1
- package/dist/flat-target-session-DvcQX7J5.mjs +0 -1
- package/dist/handlers-8zN_vBIz.mjs +0 -1
- package/dist/handlers-DHO3rjsW.mjs +0 -1
- package/dist/handlers-FJ80VzUI.mjs +0 -2
- package/dist/handlers-VHWrxbM_.mjs +0 -1
- package/dist/handlers-mPFiNPe8.mjs +0 -302
- package/dist/jadx-search-B_Yse0Zh.mjs +0 -5
- package/dist/maintenance-BUpIukhg.mjs +0 -1
- package/dist/manifest-B7NB2rh2.mjs +0 -1
- package/dist/manifest-BDi4nbH1.mjs +0 -1
- package/dist/manifest-BLDfkE7n.mjs +0 -1
- package/dist/manifest-BcXbB4gf.mjs +0 -1
- package/dist/manifest-Bdnc_vrc.mjs +0 -1
- package/dist/manifest-BuYKgCnp.mjs +0 -1
- package/dist/manifest-CBfNnGPV.mjs +0 -1
- package/dist/manifest-CPS1Xv69.mjs +0 -1
- package/dist/manifest-CRryuZF4.mjs +0 -1
- package/dist/manifest-CvTe5ZGV2.mjs +0 -1
- package/dist/manifest-D-5GH0DV.mjs +0 -1
- package/dist/manifest-D3Ssf3IC.mjs +0 -1
- package/dist/manifest-D5ck3NvC.mjs +0 -1
- package/dist/manifest-DG19q-Ld.mjs +0 -1
- package/dist/manifest-DLMlD0Zc.mjs +0 -1
- package/dist/manifest-DwL2ik8P.mjs +0 -1
- package/dist/manifest-ItF5P8A12.mjs +0 -1
- package/dist/manifest-KZphqIyX.mjs +0 -1
- package/dist/manifest-RcpX_MyZ.mjs +0 -123
- package/dist/manifest-Zy7Odg5J.mjs +0 -1
- package/dist/manifest-ff1H7Pdp.mjs +0 -1
- package/dist/manifest-iuhF6pTL2.mjs +0 -1
- package/dist/manifest-yC16OhL2.mjs +0 -1
- package/dist/matchesWildcardPattern-BAG6LvX5.mjs +0 -1
- package/dist/native-j8l473zn.mjs +0 -961
- package/dist/network-T0VRwNPd.mjs +0 -7
- package/dist/outputPaths-B4Ic4RZh.mjs +0 -2
- package/dist/platform-CzaQtISh.mjs +0 -93
- package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +0 -1
- package/dist/process-CWhsCWrf.mjs +0 -2
- package/dist/proxy-DZFlDsG3.mjs +0 -2
- package/dist/search-defaults-lYBVn_3L.mjs +0 -1
- package/dist/shared-state-board-BSjXLUV1.mjs +0 -1
- package/dist/sourcemap-Dh3Ai_ur.mjs +0 -1
- package/dist/streaming-BcJ0B6ao.mjs +0 -1
- package/dist/types-D9EiE5o9.mjs +0 -1
- /package/dist/{CacheAdapters-CsNtQIR8.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
- /package/dist/{EventBus-DL8iLA09.mjs → EventBus-Cm-t-B65.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-BtbwXsLC.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
- /package/dist/{HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
- /package/dist/{InstrumentationSession-D_G1ZPyd.mjs → InstrumentationSession-c5qZyp7d.mjs} +0 -0
- /package/dist/{ResponseBuilder-BfWP-uaT.mjs → ResponseBuilder-nPXl_khE.mjs} +0 -0
- /package/dist/{RingBuffer-Dm54ELKT.mjs → RingBuffer-B6RTHmij.mjs} +0 -0
- /package/dist/{StealthVerifier-BmcxfwSF.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
- /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
- /package/dist/{authorization-schema-BOFwSXUN.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
- /package/dist/{bind-helpers-m2U8glkF.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
- /package/dist/{capabilities-CyXuKUl1.mjs → capabilities-L1ax5EHS.mjs} +0 -0
- /package/dist/{chunk-C_pMuVsO.mjs → chunk-88NL7fhV.mjs} +0 -0
- /package/dist/{concurrency-DCr8WQ2M.mjs → concurrency-Dehnw4JC.mjs} +0 -0
- /package/dist/{evidence-graph-bridge-CV_UdYqj.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
- /package/dist/{formatAddress-vLA_hOJt.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-CsIJGkpd.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
- /package/dist/{tool-builder-qif8M9-K.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
- /package/dist/{types-Fz69RzbZ.mjs → types-BzPBzmVB.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{a as t,b as n,d as r,i,n as a,s as o,t as s}from"./Win32API-DoP3MMHS.mjs";import{promises as c}from"node:fs";const l={CNT_CODE:32,CNT_INITIALIZED_DATA:64,CNT_UNINITIALIZED_DATA:128,MEM_EXECUTE:536870912,MEM_READ:1073741824,MEM_WRITE:2147483648},u={EXPORT:0,IMPORT:1,RESOURCE:2,EXCEPTION:3,IAT:12,DELAY_IMPORT:13};var d=class{async parseHeaders(e,t){let i=BigInt(t),a=n(e);try{let e=r(a,i,64),t=e.readUInt16LE(0);if(t!==23117)throw Error(`Invalid DOS header: expected 0x5A4D, got 0x${t.toString(16)}`);let n=e.readUInt32LE(60),o=r(a,i+BigInt(n),264),s=o.readUInt32LE(0);if(s!==17744)throw Error(`Invalid PE signature: expected 0x4550, got 0x${s.toString(16)}`);let c=o.readUInt16LE(4),l=o.readUInt16LE(6),u=o.readUInt32LE(8),d=o.readUInt16LE(22),f=o.readUInt16LE(24),p=f===523,m,h,g,_;return p?(h=o.readUInt32LE(40),m=o.readBigUInt64LE(48),g=o.readUInt32LE(80),_=o.readUInt32LE(132)):(h=o.readUInt32LE(40),m=BigInt(o.readUInt32LE(52)),g=o.readUInt32LE(80),_=o.readUInt32LE(116)),{dosHeader:{e_magic:t,e_lfanew:n},ntSignature:s,fileHeader:{machine:c,numberOfSections:l,timeDateStamp:u,characteristics:d},optionalHeader:{magic:f,imageBase:`0x${m.toString(16)}`,entryPoint:`0x${h.toString(16)}`,sizeOfImage:g,numberOfRvaAndSizes:_}}}finally{s(a)}}async listSections(e,t){let i=BigInt(t),a=n(e);try{let e=await this.readCoreHeaders(a,i),t=[];for(let n=0;n<e.numSections;n++){let o=e.firstSectionOffset+n*40,s=r(a,i+BigInt(o),40),c=s.indexOf(0),u=s.subarray(0,c>0&&c<=8?c:8).toString(`ascii`),d=s.readUInt32LE(8),f=s.readUInt32LE(12),p=s.readUInt32LE(16),m=s.readUInt32LE(36);t.push({name:u,virtualAddress:`0x${f.toString(16)}`,virtualSize:d,rawSize:p,characteristics:m,isExecutable:(m&l.MEM_EXECUTE)!==0,isWritable:(m&l.MEM_WRITE)!==0,isReadable:(m&l.MEM_READ)!==0})}return t}finally{s(a)}}async parseImports(e,t){let i=BigInt(t),a=n(e);try{let e=await this.readCoreHeaders(a,i),t=e.dataDirectories[u.IMPORT];if(!t||t.rva===0)return[];let n=[],o=t.rva;for(let t=0;t<500;t++){let t=r(a,i+BigInt(o),20),s=t.readUInt32LE(12);if(s===0)break;let c=r(a,i+BigInt(s),256),l=c.indexOf(0),u=c.subarray(0,l>0?l:256).toString(`ascii`),d=t.readUInt32LE(0)||t.readUInt32LE(16),f=this.readThunkArray(a,i,d,e.isPE32Plus);n.push({dllName:u,functions:f}),o+=20}return n}finally{s(a)}}async parseExports(e,t){let i=BigInt(t),a=n(e);try{let e=(await this.readCoreHeaders(a,i)).dataDirectories[u.EXPORT];if(!e||e.rva===0)return[];let t=r(a,i+BigInt(e.rva),40),n=t.readUInt32LE(24),o=t.readUInt32LE(28),s=t.readUInt32LE(32),c=t.readUInt32LE(36),l=t.readUInt32LE(16),d=[],f=r(a,i+BigInt(s),n*4),p=r(a,i+BigInt(c),n*2);for(let t=0;t<Math.min(n,2e3);t++){let n=f.readUInt32LE(t*4),s=p.readUInt16LE(t*2),c=r(a,i+BigInt(n),256),u=c.indexOf(0),m=c.subarray(0,u>0?u:256).toString(`ascii`),h=r(a,i+BigInt(o+s*4),4).readUInt32LE(0),g=null;if(h>=e.rva&&h<e.rva+e.size){let e=r(a,i+BigInt(h),256),t=e.indexOf(0);g=e.subarray(0,t>0?t:256).toString(`ascii`)}d.push({name:m,ordinal:l+s,rva:`0x${h.toString(16)}`,forwardedTo:g})}return d}finally{s(a)}}async detectInlineHooks(t,i){let a=n(t),o=[];try{let n=this.enumerateModulesInternal(a),s=i?n.filter(e=>e.name.toLowerCase().includes(i.toLowerCase())):n;for(let n of s)try{let e=await c.readFile(n.path),i=await this.parseExports(t,n.base);for(let t of i){let i=parseInt(t.rva,16);if(i===0||t.forwardedTo)continue;let s=r(a,BigInt(n.base)+BigInt(i),16),c=this.rvaToFileOffset(e,i);if(c<0||c+16>e.length)continue;let l=e.subarray(c,c+16);if(!s.equals(l)){let e=this.classifyHook(s),r=this.decodeJumpTarget(s,BigInt(n.base)+BigInt(i));o.push({address:`0x${(BigInt(n.base)+BigInt(i)).toString(16)}`,moduleName:n.name,functionName:t.name,originalBytes:Array.from(l),currentBytes:Array.from(s),hookType:e,jumpTarget:r})}}}catch(t){e.debug(`Hook check skipped for ${n.name}: ${t}`)}}finally{s(a)}return o}async analyzeSections(e,t){let n=await this.listSections(e,t),r=[];for(let e of n)e.isReadable&&e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`rwx`,severity:`high`,details:`Section ${e.name} has Read+Write+Execute permissions — unusual and potentially malicious`}):e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`writable_code`,severity:`high`,details:`Section ${e.name} is writable and executable — code may be self-modifying or packed`}):e.isExecutable&&!e.name.startsWith(`.text`)&&!e.name.startsWith(`.code`)&&(e.characteristics&l.CNT_INITIALIZED_DATA)!==0&&r.push({sectionName:e.name,anomalyType:`executable_data`,severity:`medium`,details:`Data section ${e.name} has execute permission`});return r}async readCoreHeaders(e,t){let n=r(e,t,64).readUInt32LE(60),i=r(e,t+BigInt(n),264),a=i.readUInt16LE(6),o=i.readUInt16LE(20),s=i.readUInt16LE(24)===523,c=s?i.readUInt32LE(132):i.readUInt32LE(116),l=s?136:120,u=[];for(let e=0;e<Math.min(c,16);e++){let t=l+e*8;t+8<=i.length&&u.push({rva:i.readUInt32LE(t),size:i.readUInt32LE(t+4)})}return{numSections:a,isPE32Plus:s,firstSectionOffset:n+4+20+o,dataDirectories:u}}readThunkArray(e,t,n,i){let a=i?8:4,o=[],s=i?9223372036854775808n:2147483648n;for(let c=0;c<2e3;c++){let l=r(e,t+BigInt(n+c*a),a),u=i?l.readBigUInt64LE(0):BigInt(l.readUInt32LE(0));if(u===0n)break;if((u&s)!==0n)o.push({name:`Ordinal#${Number(u&65535n)}`,ordinal:Number(u&65535n),hint:0,thunkRva:`0x${(n+c*a).toString(16)}`});else{let i=Number(u),s=r(e,t+BigInt(i),258),l=s.readUInt16LE(0),d=s.indexOf(0,2),f=s.subarray(2,d>2?d:258).toString(`ascii`);o.push({name:f,ordinal:0,hint:l,thunkRva:`0x${(n+c*a).toString(16)}`})}}return o}enumerateModulesInternal(n){let r=[];try{let{modules:e,count:s}=a(n);for(let a=0;a<s;a++){let s=e[a],c=i(n,s),l=o(n,s),u=t(n,s)??c;l.success&&r.push({name:c,base:`0x${l.info.lpBaseOfDll.toString(16)}`,path:u,size:l.info.SizeOfImage})}}catch(t){e.debug(`Module enumeration failed: ${t}`)}return r}rvaToFileOffset(e,t){let n=e.readUInt32LE(60),r=e.readUInt16LE(n+6),i=e.readUInt16LE(n+20),a=n+24+i;for(let n=0;n<r;n++){let r=a+n*40;if(r+40>e.length)break;let i=e.readUInt32LE(r+12),o=e.readUInt32LE(r+8),s=e.readUInt32LE(r+20);if(t>=i&&t<i+o)return s+(t-i)}return-1}classifyHook(e){return e[0]===233?`jmp_rel32`:e[0]===255&&e[1]===37?`jmp_abs64`:e[0]===104&&e[5]===195?`push_ret`:`unknown`}decodeJumpTarget(e,t){if(e[0]===233){let n=e.readInt32LE(1);return`0x${(t+5n+BigInt(n)).toString(16)}`}return e[0]===255&&e[1]===37&&e.length>=14?`0x${e.readBigUInt64LE(6).toString(16)}`:e[0]===104?`0x${e.readUInt32LE(1).toString(16)}`:`0x0`}};const f=new d;export{d as PEAnalyzer,f as peAnalyzer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Xi as e,ar as t,ir as n,or as r,sr as i}from"./constants-DMv3svps.mjs";import{r as a}from"./native-g095qhpK.mjs";import{t as o}from"./factory-BxNdBiZa.mjs";import{n as s,t as c}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as l}from"node:crypto";var u=class{providerCache=null;get provider(){return this.providerCache||=o(),this.providerCache}set provider(e){this.providerCache=e}async scan(e,i,a){let o=performance.now(),l=Math.min(a?.maxDepth??4,n),u=a?.maxOffset??t,d=a?.maxResults??r,f=a?.alignment??8,p=a?.staticOnly??!1,m=s(i),h=this.provider.openProcess(e,!1);try{let t=await this.getModuleMap(e),n=[],r=new Set([m]);for(let e=0;e<l&&r.size!==0;e++){let e=this.scanLevel(h,r,u,f,a?.modules?{modules:a.modules}:void 0);if(e.length===0)break;n.push(e),r=new Set;for(let t of e)if(r.add(t.pointerAddress),r.size>5e4)break}let i=this.buildChains(n,m,t,d,p),s=`${(performance.now()-o).toFixed(1)}ms`;return{pid:e,targetAddress:c(m),chains:i,totalFound:i.length,maxDepth:l,elapsed:s}}finally{this.provider.closeProcess(h)}}async validateChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r=0;r<t.links.length;r++){let i=t.links[r],a;try{a=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return{chainId:t.id,isValid:!1,resolvedAddress:null,expectedAddress:t.targetAddress,brokenAt:r}}e=a+BigInt(i.offset)}let r=c(e),i=s(t.targetAddress),a=e===i;return{chainId:t.id,isValid:a,resolvedAddress:r,expectedAddress:t.targetAddress,brokenAt:a?void 0:t.links.length-1}}finally{this.provider.closeProcess(n)}}async validateChains(e,t){let n=[];for(let r of t)n.push(await this.validateChain(e,r));return n}async resolveChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r of t.links){let t;try{t=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return null}e=t+BigInt(r.offset)}return c(e)}finally{this.provider.closeProcess(n)}}exportChains(e){return JSON.stringify(e,null,2)}importChains(e){let t=JSON.parse(e);if(!Array.isArray(t))throw Error(`Invalid chain data: expected array`);return t}async getModuleMap(e){let t=new Map;try{let n=await a.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=s(e.baseAddress);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}scanLevel(t,n,r,a,o){let s=[],c=i,l=Array.from(n).toSorted((e,t)=>e<t?-1:+(e>t));if(l.length===0)return s;let u=BigInt(r),d=l[0]-u,f=l[l.length-1]+u,p=0n,m=e;for(;p<m;){let e=this.provider.queryRegion(t,p);if(!e)break;let n=e.size;if(e.isReadable&&n>0&&n<=2**53-1){let i=e.baseAddress;for(let e=0;e<n&&s.length<1e5;e+=c){let o=Math.min(c,n-e),p=i+BigInt(e),m;try{m=this.provider.readMemory(t,p,o).data}catch{break}for(let e=0;e<=m.length-8;e+=a){let t=m.readBigUInt64LE(e);if(t<d||t>f)continue;let n=t-u,i=t+u,a=0,o=l.length;for(;a<o;){let e=a+o>>>1;l[e]<n?a=e+1:o=e}for(let n=a;n<l.length&&l[n]<=i;n++){let i=l[n];if(Number(t>i?t-i:i-t)<=r){let n=p+BigInt(e),r=Number(i-t);s.push({pointerAddress:n,pointsTo:t,offset:r});break}}}}}p=e.baseAddress+BigInt(e.size)}return s}buildChains(e,n,r,i,a){if(e.length===0)return[];let o=[],s=c(n);for(let n=0;n<e.length&&o.length<i;n++){let u=e[n];if(n===0)for(let e of u){if(o.length>=i)break;let t=c(e.pointerAddress),n=this.resolveToModule(e.pointerAddress,r),u=n!==null;if(a&&!u)continue;let d={address:t,module:n?.module,moduleOffset:n?.offset,offset:e.offset};o.push({id:l(),links:[d],targetAddress:s,baseAddress:t,isStatic:u,depth:1,lastValidated:Date.now(),isValid:!0})}else{let d=e[n-1],f=new Map;for(let e of d)f.set(e.pointerAddress,e);let p=BigInt(t);for(let e of u){if(o.length>=i)break;let t;if(t=f.get(e.pointsTo),!t){for(let n of d)if((e.pointsTo>n.pointerAddress?e.pointsTo-n.pointerAddress:n.pointerAddress-e.pointsTo)<=p){t=n;break}}if(!t)continue;let n=c(e.pointerAddress),u=this.resolveToModule(e.pointerAddress,r),m=u!==null;if(a&&!m)continue;let h=[{address:n,module:u?.module,moduleOffset:u?.offset,offset:Number(t.pointerAddress-e.pointsTo)},{address:c(t.pointerAddress),offset:t.offset}];o.push({id:l(),links:h,targetAddress:s,baseAddress:n,isStatic:m,depth:h.length,lastValidated:Date.now(),isValid:!0})}}}return o.sort((e,t)=>e.isStatic===t.isStatic?e.depth-t.depth:e.isStatic?-1:1),o.slice(0,i)}};const d=new u;export{u as PointerChainEngine,d as pointerChainEngine};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{Ht as t}from"./constants-DMv3svps.mjs";const n=new class{processes=new Set;register(e){e&&(this.processes.add(e),`kill`in e?e.once(`close`,()=>this.unregister(e)):`terminate`in e&&(typeof e.once==`function`?e.once(`exit`,()=>this.unregister(e)):typeof e.on==`function`&&e.on(`exit`,()=>this.unregister(e))))}unregister(e){e&&this.processes.delete(e)}async terminateAll(){if(this.processes.size===0)return;e.debug(`[ProcessRegistry] Attempting to terminate ${this.processes.size} active processes/workers...`);let n=[];for(let r of this.processes)`terminate`in r?n.push(r.terminate().then(()=>{this.processes.delete(r)}).catch(t=>{e.warn(`[ProcessRegistry] Error terminating worker: ${t.message}`)})):`kill`in r&&n.push(new Promise(n=>{if(r.killed||r.exitCode!==null||r.signalCode!==null)return this.processes.delete(r),n();r.kill(`SIGTERM`);let i=!1,a=()=>{i||(i=!0,this.processes.delete(r),n())};r.once(`exit`,a),r.once(`close`,a),setTimeout(()=>{if(!i&&!r.killed&&r.exitCode===null){e.debug(`[ProcessRegistry] Force killing child process PID ${r.pid}`);try{r.kill(`SIGKILL`)}catch{}a()}},t).unref()}));await Promise.race([Promise.all(n),new Promise(e=>setTimeout(e,t+1e3).unref())]),this.processes.clear(),e.debug(`[ProcessRegistry] Termination sweep complete.`)}};export{n as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-88NL7fhV.mjs";var t=e({ReverseEvidenceGraph:()=>i});let n=1;function r(e){return`${e}-${n++}`}var i=class{nodes=new Map;edges=new Map;eventBus;isDirty=!1;mutationSeq=0;lastPersistedSeq=0;persistNotifier;setEventBus(e){this.eventBus=e}setPersistNotifier(e){this.persistNotifier=e}markDirty(){this.isDirty=!0,this.mutationSeq++,this.persistNotifier?.()}commit(){this.isDirty&&this.eventBus&&(this.isDirty=!1,this.eventBus.emit(`evidence:updated`,{timestamp:new Date().toISOString(),reason:`Tool execution committed changes`}))}addNode(e,t,n={}){let i={id:r(e),type:e,label:t,metadata:n,createdAt:Date.now()};return this.nodes.set(i.id,i),this.markDirty(),i}addEdge(e,t,n,i){if(!this.nodes.has(e))throw Error(`Source node "${e}" not found`);if(!this.nodes.has(t))throw Error(`Target node "${t}" not found`);let a={id:r(`edge`),source:e,target:t,type:n,metadata:i};return this.edges.set(a.id,a),this.markDirty(),a}getNode(e){return this.nodes.get(e)}removeNode(e){if(!this.nodes.has(e))return!1;this.nodes.delete(e);for(let[t,n]of this.edges)(n.source===e||n.target===e)&&this.edges.delete(t);return this.markDirty(),!0}getEdgesFrom(e){return[...this.edges.values()].filter(t=>t.source===e)}getEdgesTo(e){return[...this.edges.values()].filter(t=>t.target===e)}get nodeCount(){return this.nodes.size}get edgeCount(){return this.edges.size}getEvidenceChain(e,t=`forward`){if(!this.nodes.get(e))return[];let n=new Set,r=[e],i=[];for(;r.length>0;){let e=r.shift();if(n.has(e))continue;n.add(e);let a=this.nodes.get(e);a&&i.push(a);let o=t===`forward`?this.getEdgesFrom(e):this.getEdgesTo(e);for(let e of o){let i=t===`forward`?e.target:e.source;n.has(i)||r.push(i)}}return i}queryByUrl(e){let t=[...this.nodes.values()].filter(t=>t.type===`request`&&typeof t.metadata.url==`string`||typeof t.metadata.url==`string`?t.metadata.url.includes(e):!1),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByFunction(e){let t=[...this.nodes.values()].filter(t=>t.type===`function`&&typeof t.metadata.functionName==`string`?t.metadata.functionName.includes(e):!!(t.label.includes(e)&&(t.type===`function`||t.type===`breakpoint-hook`))),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByScriptId(e){let t=[...this.nodes.values()].filter(t=>t.type===`script`&&t.metadata.scriptId===e),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}exportJson(){return{version:1,nodes:[...this.nodes.values()],edges:[...this.edges.values()],exportedAt:new Date().toISOString()}}exportMarkdown(){let e=[];e.push(`# Reverse Evidence Graph Report`),e.push(``),e.push(`**Exported:** ${new Date().toISOString()}`),e.push(`**Nodes:** ${this.nodes.size} | **Edges:** ${this.edges.size}`),e.push(``);let t=new Map;for(let e of this.nodes.values()){let n=t.get(e.type)??[];n.push(e),t.set(e.type,n)}for(let n of[`request`,`initiator-stack`,`script`,`function`,`breakpoint-hook`,`captured-data`,`replay-artifact`,`v8-heap-object`,`v8-hidden-class`,`network-request`,`network-response`,`canvas-scene-node`,`canvas-render-node`,`skia-draw-call`,`syscall-event`,`mojo-message`,`mojo-interface`,`binary-symbol`,`binary-function`,`binary-module`,`proto-message`,`proto-state`]){let r=t.get(n);if(!(!r||r.length===0)){e.push(`## ${n} (${r.length})`),e.push(``);for(let t of r){e.push(`### ${t.label}`),e.push(`- **ID:** \`${t.id}\``),e.push(`- **Created:** ${new Date(t.createdAt).toISOString()}`);let n=Object.keys(t.metadata);if(n.length>0)for(let r of n){let n=t.metadata[r],i=typeof n==`string`?n:JSON.stringify(n);e.push(`- **${r}:** ${i}`)}let r=this.getEdgesFrom(t.id),i=this.getEdgesTo(t.id);r.length>0&&e.push(`- **→ Out:** ${r.map(e=>`${e.type} → \`${e.target}\``).join(`, `)}`),i.length>0&&e.push(`- **← In:** ${i.map(e=>`\`${e.source}\` ${e.type} →`).join(`, `)}`),e.push(``)}}}return e.join(`
|
|
2
2
|
`)}getSnapshotSeq(){return this.mutationSeq}getLastPersistedSeq(){return this.lastPersistedSeq}markPersisted(){this.lastPersistedSeq=this.mutationSeq}isPersistDirty(){return this.mutationSeq!==this.lastPersistedSeq}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),graph:this.exportJson()}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1||!t.graph)return;let{nodes:n,edges:r}=t.graph;this.nodes.clear(),this.edges.clear();for(let e of n)this.nodes.set(e.id,e);for(let e of r)this.edges.set(e.id,e);this.mutationSeq=n.length+r.length,this.lastPersistedSeq=this.mutationSeq,this.isDirty=!1}};export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{n as t}from"./ToolCatalog-DgmQXdsm.mjs";const n={endpoint:null,selectedIndex:null,selectedUrl:null,selectedTitle:null,selectedTargetId:null,browserPid:null,rendererPid:null,attachedAt:null};var r=class{dirty=!1;persistedRevision=0;revision=0;pendingActivatedDomains=new Set;pendingDomainTtls=new Map;browserAttach={...n};toolCoverage=new Map;markPersisted(){this.persistedRevision=this.revision,this.dirty=!1}isPersistDirty(){return this.dirty||this.revision!==this.persistedRevision}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),activatedDomains:[...this.pendingActivatedDomains].toSorted(),domainTtls:Object.fromEntries([...this.pendingDomainTtls.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{ttlMinutes:t.ttlMinutes,toolNames:[...t.toolNames]}])),browserAttach:{...this.browserAttach},toolCoverage:Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}]))}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1)return;if(this.pendingActivatedDomains=new Set(Array.isArray(t.activatedDomains)?t.activatedDomains.filter(e=>typeof e==`string`):[]),this.pendingDomainTtls=new Map,t.domainTtls&&typeof t.domainTtls==`object`)for(let[e,n]of Object.entries(t.domainTtls)){if(!n||typeof n!=`object`)continue;let t=n,r=Number(t.ttlMinutes),i=Array.isArray(t.toolNames)?t.toolNames.filter(e=>typeof e==`string`):[];Number.isFinite(r)&&this.pendingDomainTtls.set(e,{ttlMinutes:r,toolNames:i})}let r=t.browserAttach;if(this.browserAttach=r&&typeof r==`object`?{endpoint:typeof r.endpoint==`string`?r.endpoint:null,selectedIndex:typeof r.selectedIndex==`number`&&Number.isInteger(r.selectedIndex)?r.selectedIndex:null,selectedUrl:typeof r.selectedUrl==`string`?r.selectedUrl:null,selectedTitle:typeof r.selectedTitle==`string`?r.selectedTitle:null,selectedTargetId:typeof r.selectedTargetId==`string`?r.selectedTargetId:null,browserPid:typeof r.browserPid==`number`&&Number.isInteger(r.browserPid)?r.browserPid:null,rendererPid:typeof r.rendererPid==`number`&&Number.isInteger(r.rendererPid)?r.rendererPid:null,attachedAt:typeof r.attachedAt==`string`?r.attachedAt:null}:{...n},this.toolCoverage.clear(),t.toolCoverage&&typeof t.toolCoverage==`object`)for(let[e,n]of Object.entries(t.toolCoverage)){if(!n||typeof n!=`object`)continue;let t=n;this.toolCoverage.set(e,{count:typeof t.count==`number`&&Number.isFinite(t.count)&&t.count>=0?Math.trunc(t.count):0,lastCalledAt:typeof t.lastCalledAt==`string`?t.lastCalledAt:null,lastArgsKeys:Array.isArray(t.lastArgsKeys)?t.lastArgsKeys.filter(e=>typeof e==`string`):[]})}this.revision+=1,this.persistedRevision=this.revision,this.dirty=!1}noteDirty(){this.revision+=1,this.dirty=!0}setPendingDomainActivation(e,t,n){this.pendingActivatedDomains.add(e),this.pendingDomainTtls.set(e,{ttlMinutes:t,toolNames:[...n]}),this.noteDirty()}clearPendingDomainActivation(e){let t=this.pendingActivatedDomains.delete(e),n=this.pendingDomainTtls.delete(e);(t||n)&&this.noteDirty()}getPendingActivatedDomains(){return[...this.pendingActivatedDomains]}getPendingDomainTtl(e){return this.pendingDomainTtls.get(e)??null}setBrowserAttach(e){this.browserAttach={...this.browserAttach,...e},this.noteDirty()}clearBrowserAttach(){this.browserAttach={...n},this.noteDirty()}getBrowserAttach(){return{...this.browserAttach}}recordToolCall(e,t){let n={count:(this.toolCoverage.get(e)?.count??0)+1,lastCalledAt:new Date().toISOString(),lastArgsKeys:Object.keys(t).filter(e=>e!==`_meta`).toSorted()};this.toolCoverage.set(e,n),this.noteDirty()}getCoverageSummary(e){let n=Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}])),r=new Set([...t.map(e=>e.name),...e.selectedTools.map(e=>e.name),...e.activatedToolNames,...e.extensionToolsByName.keys(),...e.metaToolsByName.keys()]),i=[...this.toolCoverage.keys()].filter(e=>!r.has(e)).toSorted((e,t)=>e.localeCompare(t)),a=[...r].filter(e=>!this.toolCoverage.has(e)).toSorted((e,t)=>e.localeCompare(t));return{called:n,calledCount:this.toolCoverage.size,uncataloguedCalls:i,uncataloguedCallCount:i.length,totalKnownTools:r.size,uncalled:a,uncalledCount:a.length}}};function i(e){return!e||typeof e.getDomainInstance!=`function`?null:e.getDomainInstance(`serverRuntimeState`)??null}async function a(t){let n=i(t);if(!n)return;let r=n.getPendingActivatedDomains();if(r.length!==0){for(let i of r)if(!(t.enabledDomains.has(i)&&t.domainTtlEntries.has(i)))try{let{handleActivateDomain:e}=await import(`./index.mjs`).then(e=>e.n),r=n.getPendingDomainTtl(i);await e(t,{domain:i,...r?{ttlMinutes:r.ttlMinutes}:{}})}catch(t){e.warn(`Failed to restore activated domain "${i}":`,t)}}}export{i as n,a as r,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,c as n,d as r,f as i,l as a,m as o,o as s,p as c,t as l,u}from"./Win32API-
|
|
1
|
+
import{_ as e,b as t,c as n,d as r,f as i,l as a,m as o,o as s,p as c,t as l,u}from"./Win32API-DoP3MMHS.mjs";import{l as d}from"./Win32Debug-DwF8mQGm.mjs";var f=class{states=new Map;async apply(r,o){this.states.has(r)&&await this.remove(r);let c=t(r,!0),d=[],f=[];try{let t=s(`kernel32.dll`);if(t===0n)throw Error(`Cannot find kernel32.dll`);let l=i(c,0n,4096,a.COMMIT|a.RESERVE,u.EXECUTE_READWRITE);if(l===0n)throw Error(`VirtualAllocEx failed for speedhack shared memory`);let p=Buffer.alloc(8);p.writeDoubleLE(o,0),e(c,l,p);let m=Buffer.alloc(8,0);e(c,l+8n,m),e(c,l+16n,m);let h=n(t,`GetTickCount64`);h!==0n&&await this.hookTimeFunction(c,h,l,256n,`gettick64`)&&(d.push(`GetTickCount64`),f.push(`gettick64`));let g=n(t,`QueryPerformanceCounter`);return g!==0n&&await this.hookTimeFunction(c,g,l,512n,`qpc`)&&(d.push(`QueryPerformanceCounter`),f.push(`qpc`)),this.states.set(r,{pid:r,speed:o,hookedApis:d,isActive:!0,allocatedMemory:`0x${l.toString(16).toUpperCase()}`,patchIds:f}),{success:d.length>0,hookedApis:d}}catch(e){throw l(c),e}finally{l(c)}}async setSpeed(n,r){let i=this.states.get(n);if(!i||!i.isActive||!i.allocatedMemory)return!1;let a=BigInt(i.allocatedMemory),o=t(n,!0);try{let t=Buffer.alloc(8);return t.writeDoubleLE(r,0),e(o,a,t),i.speed=r,!0}finally{l(o)}}getSpeed(e){let t=this.states.get(e);return t?.isActive?t.speed:null}async remove(n){let i=this.states.get(n);if(!i)return!1;let s=t(n,!0);try{if(i.allocatedMemory){let t=BigInt(i.allocatedMemory);for(let n=0;n<i.patchIds.length;n++)try{let i=r(s,t+(3072n+BigInt(n*32)),32),a=i.readBigUInt64LE(0),c=i.readUInt32LE(8);if(a!==0n&&c>0&&c<=16){let t=i.subarray(12,12+c),{oldProtect:n}=o(s,a,c,u.EXECUTE_READWRITE);e(s,a,t),d(s,a,c),o(s,a,c,n)}}catch{}c(s,t,0,a.RELEASE)}}finally{l(s)}return i.isActive=!1,this.states.delete(n),!0}isActive(e){return this.states.get(e)?.isActive??!1}listActive(){return Array.from(this.states.values()).filter(e=>e.isActive)}async hookTimeFunction(t,n,i,a,s){try{let s=r(t,n,14),c=i+a;e(t,c,s);let l=n+14n,f=this.buildAbsoluteJump(l);e(t,c+14n,Buffer.from(f));let p=this.buildAbsoluteJump(c),{oldProtect:m}=o(t,n,14,u.EXECUTE_READWRITE);e(t,n,Buffer.from(p)),d(t,n,14),o(t,n,14,m);let h=this.states.size,g=3072n+BigInt(h*32),_=Buffer.alloc(32);return _.writeBigUInt64LE(n,0),_.writeUInt32LE(14,8),s.copy(_,12),e(t,i+g,_),d(t,c,32),!0}catch{return!1}}buildAbsoluteJump(e){let t=Buffer.alloc(14);return t[0]=255,t[1]=37,t.writeUInt32LE(0,2),t.writeBigUInt64LE(e,6),Array.from(t)}};const p=new f;export{f as Speedhack,p as speedhack};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`),size:e.totalSize,fieldCount:e.fields.filter(e=>e.type!==`padding`).length}}async compareInstances(e,t,r,i){let a=i??n,[o,s]=await Promise.all([this.analyzeStructure(e,t,{size:a,parseRtti:!1}),this.analyzeStructure(e,r,{size:a,parseRtti:!1})]),c=[],l=[],u=new Map(s.fields.map(e=>[e.offset,e]));for(let e of o.fields){let t=u.get(e.offset);t&&(e.value===t.value&&e.type===t.type?c.push(e):l.push({offset:e.offset,value1:e.value,value2:t.value,type:e.type}))}return{matching:c,differing:l}}classifyValue(e,t,n,r,i){if(i>=8){let n=e.readBigUInt64LE(r);if(r===0&&n!==0n&&this.isValidExecutablePointer(t,n))try{let e=this.provider.readMemory(t,n,16).data.readBigUInt64LE(0);if(this.isValidExecutablePointer(t,e))return{type:`vtable_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.9,notes:`likely vtable pointer (points to array of executable pointers)`}}catch{}if(n!==0n&&n>65536n&&n<140737488355327n&&this.isValidReadablePointer(t,n)){let e=this.readCString(t,n,64);return e&&e.length>=2?{type:`string_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()} → "${e.slice(0,32)}${e.length>32?`...`:``}"`,confidence:.75,notes:`string pointer: "${e.slice(0,64)}"`}:{type:`pointer`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.7,notes:`valid pointer to readable memory`}}}if(i>=4){let t=e.readUInt32LE(r),n=e.readInt32LE(r),a=e.readFloatLE(r);if(t===0&&i>=8&&e.readUInt32LE(r+4)===0){let t=0;for(let n=r;n<e.length&&e[n]===0;n++)t++;let n=Math.min(t,i)&-8;return{type:`padding`,size:n,value:`0x${`00`.repeat(Math.min(n,8))}`,confidence:.6}}if(t===0)return{type:`int32`,size:4,value:`0`,confidence:.4,notes:`zero value — could be int, bool, or padding`};if(t===1)return{type:`bool`,size:4,value:`true`,confidence:.5,notes:`value is 1 — could be boolean`};if(isFinite(a)&&!isNaN(a)&&Math.abs(a)>1e-10&&Math.abs(a)<1e8){let e=t>0&&t<1e5,n=Math.abs(a-Math.round(a))>.001;if(n||!e&&Math.abs(a)<1e4)return{type:`float`,size:4,value:a.toFixed(6),confidence:n?.8:.5,notes:n?`IEEE 754 float with fractional part`:`could be float or int`}}return t<2147483648?{type:`int32`,size:4,value:n.toString(),confidence:.6}:{type:`uint32`,size:4,value:t.toString(),confidence:.5}}return i>=2?{type:`uint16`,size:2,value:e.readUInt16LE(r).toString(),confidence:.4}:{type:`uint8`,size:1,value:e.readUInt8(r).toString(),confidence:.3}}isValidReadablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable:!1}catch{return!1}}isValidExecutablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable&&n.isExecutable:!1}catch{return!1}}readCString(e,t,n){try{let r=this.provider.readMemory(e,t,n).data,i=r.indexOf(0);if(i<0)return null;let a=r.subarray(0,i).toString(`ascii`);return/^[\x20-\x7E]+$/.test(a)&&a.length>=1?a:null}catch{return null}}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}fieldTypeToCType(e,t){switch(e){case`int8`:return`int8_t`;case`uint8`:return`uint8_t`;case`int16`:return`int16_t`;case`uint16`:return`uint16_t`;case`int32`:return`int32_t`;case`uint32`:return`uint32_t`;case`int64`:return`int64_t`;case`uint64`:return`uint64_t`;case`float`:return`float`;case`double`:return`double`;case`pointer`:return`void*`;case`vtable_ptr`:return`void**`;case`string_ptr`:return`char*`;case`bool`:return`bool`;case`padding`:return`uint8_t[${t}]`;case`unknown`:return`uint8_t[${t}]`;default:return`uint8_t[${t}]`}}async getModuleEntries(e){let t=new Map;try{let n=await
|
|
1
|
+
import{Fi as e,Ii as t,Pi as n}from"./constants-DMv3svps.mjs";import{r}from"./native-g095qhpK.mjs";import{t as i}from"./factory-BxNdBiZa.mjs";var a=class{providerCache=null;get provider(){return this.providerCache||=i(),this.providerCache}set provider(e){this.providerCache=e}async analyzeStructure(e,t,r){let i=r?.size??n,a=BigInt(t.startsWith(`0x`)?t:`0x${t}`),o=this.provider.openProcess(e,!1);try{let t=this.provider.readMemory(o,a,i).data,n=[],s=0;for(;s<i;){let e=i-s;if(e<1)break;let r=this.classifyValue(t,o,a,s,e);n.push({offset:s,size:r.size,type:r.type,name:`field_0x${s.toString(16).padStart(2,`0`).toUpperCase()}`,value:r.value,confidence:r.confidence,notes:r.notes}),s+=r.size}let c,l,u;if(n.length>0&&n[0].type===`vtable_ptr`&&(c=n[0].value,r?.parseRtti!==!1&&c))try{let t=await this.parseRtti(e,c,o);t&&(l=t.className,u=t.baseClasses)}catch{}return{baseAddress:`0x${a.toString(16).toUpperCase()}`,totalSize:i,fields:n,vtableAddress:c,className:l,baseClasses:u,timestamp:Date.now()}}finally{this.provider.closeProcess(o)}}async parseVtable(e,n){let r=BigInt(n.startsWith(`0x`)?n:`0x${n}`),i=this.provider.openProcess(e,!1);try{let a=[],o=await this.getModuleEntries(e);for(let e=0;e<t;e++){let t=r+BigInt(e*8),n;try{n=this.provider.readMemory(i,t,8).data.readBigUInt64LE(0)}catch{break}if(!this.isValidExecutablePointer(i,n))break;let s=this.resolveToModule(n,o);a.push({index:e,address:`0x${n.toString(16).toUpperCase()}`,module:s?.module,moduleOffset:s?.offset})}let s,c;try{let t=await this.parseRtti(e,n,i);t&&(s=t.className,c=t.baseClasses)}catch{}return{address:`0x${r.toString(16).toUpperCase()}`,functionCount:a.length,functions:a,rttiName:s,baseClasses:c}}finally{this.provider.closeProcess(i)}}async parseRtti(t,n,r){let i=BigInt(n.startsWith(`0x`)?n:`0x${n}`),a=!r,o=r??this.provider.openProcess(t,!1);try{let t=this.provider.readMemory(o,i-8n,8).data.readBigUInt64LE(0);if(!this.isValidReadablePointer(o,t))return null;let n=this.provider.readMemory(o,t,24).data;if(n.readUInt32LE(0)!==1)return null;let r=n.readUInt32LE(12),a=n.readUInt32LE(16),s=n.readUInt32LE(20),c=t-BigInt(s),l=c+BigInt(r),u=this.readCString(o,l+16n,e);if(!u)return null;let d=this.demangleMsvcName(u),f=[];try{let t=c+BigInt(a),n=this.provider.readMemory(o,t,16).data,r=n.readUInt32LE(8),i=n.readUInt32LE(12);if(r>0&&r<20){let t=c+BigInt(i),n=this.provider.readMemory(o,t,r*4).data;for(let t=1;t<r;t++){let r=n.readUInt32LE(t*4),i=c+BigInt(r);try{let t=this.provider.readMemory(o,i,8).data.readUInt32LE(0),n=c+BigInt(t),r=this.readCString(o,n+16n,e);r&&f.push(this.demangleMsvcName(r))}catch{break}}}}catch{}return{className:d,baseClasses:f}}catch{return null}finally{a&&this.provider.closeProcess(o)}}exportToCStruct(e,t){let n=t??e.className??`UnknownStruct`,r=[];r.push(`struct ${n} { // size: 0x${e.totalSize.toString(16).toUpperCase()} (${e.totalSize} bytes)`);for(let t of e.fields){let e=this.fieldTypeToCType(t.type,t.size),n=`0x${t.offset.toString(16).padStart(2,`0`).toUpperCase()}`,i=t.notes?`// +${n} ${t.notes}`:`// +${n} = ${t.value}`;t.type===`padding`?r.push(` uint8_t _pad_${t.offset.toString(16)}[${t.size}]; ${i}`):r.push(` ${e} ${t.name}; ${i}`)}return r.push(`};`),{name:n,definition:r.join(`
|
|
2
|
+
`),size:e.totalSize,fieldCount:e.fields.filter(e=>e.type!==`padding`).length}}async compareInstances(e,t,r,i){let a=i??n,[o,s]=await Promise.all([this.analyzeStructure(e,t,{size:a,parseRtti:!1}),this.analyzeStructure(e,r,{size:a,parseRtti:!1})]),c=[],l=[],u=new Map(s.fields.map(e=>[e.offset,e]));for(let e of o.fields){let t=u.get(e.offset);t&&(e.value===t.value&&e.type===t.type?c.push(e):l.push({offset:e.offset,value1:e.value,value2:t.value,type:e.type}))}return{matching:c,differing:l}}classifyValue(e,t,n,r,i){if(i>=8){let n=e.readBigUInt64LE(r);if(r===0&&n!==0n&&this.isValidExecutablePointer(t,n))try{let e=this.provider.readMemory(t,n,16).data.readBigUInt64LE(0);if(this.isValidExecutablePointer(t,e))return{type:`vtable_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.9,notes:`likely vtable pointer (points to array of executable pointers)`}}catch{}if(n!==0n&&n>65536n&&n<140737488355327n&&this.isValidReadablePointer(t,n)){let e=this.readCString(t,n,64);return e&&e.length>=2?{type:`string_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()} → "${e.slice(0,32)}${e.length>32?`...`:``}"`,confidence:.75,notes:`string pointer: "${e.slice(0,64)}"`}:{type:`pointer`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.7,notes:`valid pointer to readable memory`}}}if(i>=4){let t=e.readUInt32LE(r),n=e.readInt32LE(r),a=e.readFloatLE(r);if(t===0&&i>=8&&e.readUInt32LE(r+4)===0){let t=0;for(let n=r;n<e.length&&e[n]===0;n++)t++;let n=Math.min(t,i)&-8;return{type:`padding`,size:n,value:`0x${`00`.repeat(Math.min(n,8))}`,confidence:.6}}if(t===0)return{type:`int32`,size:4,value:`0`,confidence:.4,notes:`zero value — could be int, bool, or padding`};if(t===1)return{type:`bool`,size:4,value:`true`,confidence:.5,notes:`value is 1 — could be boolean`};if(isFinite(a)&&!isNaN(a)&&Math.abs(a)>1e-10&&Math.abs(a)<1e8){let e=t>0&&t<1e5,n=Math.abs(a-Math.round(a))>.001;if(n||!e&&Math.abs(a)<1e4)return{type:`float`,size:4,value:a.toFixed(6),confidence:n?.8:.5,notes:n?`IEEE 754 float with fractional part`:`could be float or int`}}return t<2147483648?{type:`int32`,size:4,value:n.toString(),confidence:.6}:{type:`uint32`,size:4,value:t.toString(),confidence:.5}}return i>=2?{type:`uint16`,size:2,value:e.readUInt16LE(r).toString(),confidence:.4}:{type:`uint8`,size:1,value:e.readUInt8(r).toString(),confidence:.3}}isValidReadablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable:!1}catch{return!1}}isValidExecutablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable&&n.isExecutable:!1}catch{return!1}}readCString(e,t,n){try{let r=this.provider.readMemory(e,t,n).data,i=r.indexOf(0);if(i<0)return null;let a=r.subarray(0,i).toString(`ascii`);return/^[\x20-\x7E]+$/.test(a)&&a.length>=1?a:null}catch{return null}}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}fieldTypeToCType(e,t){switch(e){case`int8`:return`int8_t`;case`uint8`:return`uint8_t`;case`int16`:return`int16_t`;case`uint16`:return`uint16_t`;case`int32`:return`int32_t`;case`uint32`:return`uint32_t`;case`int64`:return`int64_t`;case`uint64`:return`uint64_t`;case`float`:return`float`;case`double`:return`double`;case`pointer`:return`void*`;case`vtable_ptr`:return`void**`;case`string_ptr`:return`char*`;case`bool`:return`bool`;case`padding`:return`uint8_t[${t}]`;case`unknown`:return`uint8_t[${t}]`;default:return`uint8_t[${t}]`}}async getModuleEntries(e){let t=new Map;try{let n=await r.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=BigInt(e.baseAddress.startsWith(`0x`)?e.baseAddress:`0x${e.baseAddress}`);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}};const o=new a;export{a as StructureAnalyzer,o as structureAnalyzer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./chunk-88NL7fhV.mjs";import{t}from"./logger-CCikqqvj.mjs";const n=[{domain:`adb-bridge`,depKey:`adbBridgeHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-dG6MuR1U.mjs`)},{domain:`core`,depKey:`coreAnalysisHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-AxaxRSt6.mjs`)},{domain:`binary-instrument`,depKey:`binaryInstrumentHandlers`,profiles:[`full`],secondaryDepKeys:[`apkPackerHandlers`,`binarySecretsHandlers`],load:()=>import(`./manifest-4lmM6MZR.mjs`)},{domain:`boringssl-inspector`,depKey:`boringsslInspectorHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Dg5ScOyW.mjs`)},{domain:`browser`,depKey:`browserHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Cgxu2qdv.mjs`)},{domain:`canvas`,depKey:`canvasHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[`skiaCaptureHandlers`],load:()=>import(`./manifest-Bp33di0Q.mjs`)},{domain:`coordination`,depKey:`coordinationHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[`sharedStateBoardHandlers`],load:()=>import(`./manifest-CvDpVToN.mjs`)},{domain:`cross-domain`,depKey:`crossDomainHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-C6KoB1XE.mjs`)},{domain:`dart-inspector`,depKey:`dartInspectorHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-P0Futrgb.mjs`)},{domain:`debugger`,depKey:`debuggerHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[`antidebugHandlers`],load:()=>import(`./manifest-C7TdXCWY.mjs`)},{domain:`encoding`,depKey:`encodingHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-DLGtZH-0.mjs`)},{domain:`extension-registry`,depKey:`extensionRegistryHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-DzGoTS0R.mjs`)},{domain:`graphql`,depKey:`graphqlHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-CUokxCUN.mjs`)},{domain:`instrumentation`,depKey:`instrumentationHandlers`,profiles:[`full`],secondaryDepKeys:[`aiHookHandlers`,`hookPresetHandlers`,`evidenceHandlers`],load:()=>import(`./manifest-D8TL9RLE.mjs`)},{domain:`maintenance`,depKey:`coreMaintenanceHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[`extensionManagementHandlers`,`sandboxHandlers`],load:()=>import(`./manifest-nWXtgq5Y2.mjs`)},{domain:`memory`,depKey:`memoryScanHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-CowGSURa2.mjs`)},{domain:`mojo-ipc`,depKey:`mojoIpcHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-BvRX4nRP.mjs`)},{domain:`native-emulator`,depKey:`nativeEmulatorHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-CWJS45iO.mjs`)},{domain:`network`,depKey:`advancedHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-DIhtCBe6.mjs`)},{domain:`platform`,depKey:`platformHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Cdxdgo-D.mjs`)},{domain:`process`,depKey:`processHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-CsGIrh34.mjs`)},{domain:`protocol-analysis`,depKey:`protocolAnalysisHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-DJbruNOg.mjs`)},{domain:`proxy`,depKey:`proxyHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-BIqRE1Qz.mjs`)},{domain:`sourcemap`,depKey:`sourcemapHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Cf6SmamD.mjs`)},{domain:`streaming`,depKey:`streamingHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-CM-n64K0.mjs`)},{domain:`syscall-hook`,depKey:`syscallHookHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-W3qvVrP2.mjs`)},{domain:`trace`,depKey:`traceHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-vp1upSSq.mjs`)},{domain:`transform`,depKey:`transformHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Box-jWfr.mjs`)},{domain:`v8-inspector`,depKey:`v8InspectorHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[],load:()=>import(`./manifest-G2H52LKz.mjs`)},{domain:`wasm`,depKey:`wasmHandlers`,profiles:[`full`],secondaryDepKeys:[],load:()=>import(`./manifest-Qw7xgvjv.mjs`)},{domain:`workflow`,depKey:`workflowHandlers`,profiles:[`workflow`,`full`],secondaryDepKeys:[`macroHandlers`],load:()=>import(`./manifest-DXHdPt2T.mjs`)}],r={"adb-bridge":[`full`],core:[`workflow`,`full`],"binary-instrument":[`full`],"boringssl-inspector":[`full`],browser:[`workflow`,`full`],canvas:[`workflow`,`full`],coordination:[`workflow`,`full`],"cross-domain":[`full`],"dart-inspector":[`full`],debugger:[`workflow`,`full`],encoding:[`workflow`,`full`],"extension-registry":[`full`],graphql:[`workflow`,`full`],instrumentation:[`full`],maintenance:[`workflow`,`full`],memory:[`full`],"mojo-ipc":[`full`],"native-emulator":[`full`],network:[`workflow`,`full`],platform:[`full`],process:[`full`],"protocol-analysis":[`full`],proxy:[`full`],sourcemap:[`full`],streaming:[`workflow`,`full`],"syscall-hook":[`full`],trace:[`full`],transform:[`full`],"v8-inspector":[`workflow`,`full`],wasm:[`full`],workflow:[`workflow`,`full`]};function i(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.kind===`domain-manifest`&&t.version===1&&typeof t.domain==`string`&&typeof t.depKey==`string`&&Array.isArray(t.profiles)&&Array.isArray(t.registrations)&&typeof t.ensure==`function`}function a(e){if(!e||typeof e!=`object`)return null;let t=e;for(let e of[`default`,`manifest`,`domainManifest`]){let n=t[e];if(i(n))return n}return null}function o(e){let t=new Set;for(let[n,i]of Object.entries(r))i.includes(e)&&t.add(n);return t}function s(){return new Set(Object.keys(r))}function c(){return n}async function l(e){let r=[],i=new Set,o=new Set;for(let{domain:s,load:c}of n)if(!(e&&!e.has(s)))try{let e=a(await c());if(!e){t.warn(`[discovery] Skipping domain "${s}": no valid DomainManifest export`);continue}if(i.has(e.domain)){t.warn(`[discovery] Duplicate domain "`+e.domain+`" in generated manifests - skipping`);continue}if(o.has(e.depKey)){t.warn(`[discovery] Duplicate depKey "`+e.depKey+`" in generated manifests - skipping`);continue}i.add(e.domain),o.add(e.depKey),r.push(e),t.info(`[discovery] Loaded domain "`+e.domain+`" (`+String(e.registrations.length)+` tools)`)}catch(e){if(t.error(`[discovery] Failed to load domain "${s}"`,e),process.env.DISCOVERY_STRICT===`true`)throw e}let s=r.reduce((e,t)=>e+t.registrations.length,0);return e&&r.length===0?t.info(`[discovery] No manifests loaded for the requested startup profile. Domains remain available for lazy activation.`):t.info(`[discovery] Discovered `+String(r.length)+` domains, `+String(s)+` tools total`),r}async function u(e){let r=n.find(t=>t.domain===e);if(!r)return null;try{let n=a(await r.load());return n?(t.info(`[discovery] On-demand loaded domain "`+n.domain+`" (`+String(n.registrations.length)+` tools)`),n):(t.warn(`[discovery] Domain "${e}": no valid DomainManifest export`),null)}catch(n){return t.error(`[discovery] Failed to load domain "${e}"`,n),null}}var d=e({buildAllTools:()=>j,buildHandlerMapFromRegistry:()=>M,buildProfileDomains:()=>N,buildToolDomainMap:()=>A,buildToolGroups:()=>k,ensureAllDomainsLoaded:()=>S,ensureDomainLoaded:()=>x,getAllDomains:()=>D,getAllKnownDomains:()=>O,getAllManifests:()=>T,getAllRegistrations:()=>E,initRegistry:()=>b});function f(e,t){let n=new Set(t);return e.every(e=>n.has(e))}let p=null,m=null,h=null,g=null,_=null,v=null;async function y(e){if(p===null){if(h){await h;return}h=(async()=>{let n=await l(e?o(e):void 0);p=n,v=new Map;for(let e of n)for(let n of e.registrations){let r=n.domain?n:{...n,domain:e.domain},i=v.get(r.tool.name);i?t.warn(`[registry] Duplicate tool name "${r.tool.name}": domain "${r.domain}" conflicts with "${i.domain}" — keeping first`):v.set(r.tool.name,r)}m=[...v.values()],g=new Set(p.map(e=>e.domain)),_=new Set(m.map(e=>e.tool.name))})(),await h}}async function b(e){await y(e)}async function x(e){if(!p)throw Error(`[registry] Not initialised - call initRegistry() first.`);if(p.some(t=>t.domain===e))return p.find(t=>t.domain===e);let t=await u(e);if(!t)return null;p.push(t),g.add(t.domain);for(let e of t.registrations){let n=e.domain?e:{...e,domain:t.domain};v.has(n.tool.name)||v.set(n.tool.name,n)}m=[...v.values()],B();for(let e of t.registrations)_.add(e.tool.name);return t}async function S(){if(!p)throw Error(`[registry] Not initialised - call initRegistry() first.`);let e=s(),n=new Set(p.map(e=>e.domain)),r=[...e].filter(e=>!n.has(e));r.length!==0&&(t.info(`[registry] Loading ${r.length} remaining domains for full discovery`),await Promise.all(r.map(e=>x(e))))}function C(){if(!p)throw Error(`[registry] Not initialised - call initRegistry() first.`);return p}function w(){if(!m)throw Error(`[registry] Not initialised - call initRegistry() first.`);return m}function T(){return C()}function E(){return w()}function D(){if(!g)throw Error(`[registry] Not initialised - call initRegistry() first.`);return g}function O(){return s()}function k(){let e={};for(let t of w())(e[t.domain]??=[]).push(t.tool);return e}function A(){let e=new Map;for(let t of w())e.has(t.tool.name)||e.set(t.tool.name,t.domain);return e}function j(){return w().map(e=>e.tool)}function M(e,t){let n=t?w().filter(e=>t.has(e.tool.name)):[...w()],r=[];for(let t of n)try{r.push([t.tool.name,t.bind(e)])}catch{}return Object.fromEntries(r)}function N(){let e={search:new Set,workflow:new Set,full:new Set};for(let[t,n]of Object.entries(r))for(let r of n)e[r]?.add(t);let n={};for(let[t,r]of Object.entries(e))n[t]=[...r];return f(n.search,n.workflow)||t.warn(`[registry] Profile hierarchy: search not subset of workflow`),f(n.workflow,n.full)||t.warn(`[registry] Profile hierarchy: workflow not subset of full`),n}var P=e({allTools:()=>U,clearToolGroupsCache:()=>B,getProfileDomains:()=>Y,getToolDomain:()=>J,getToolsByDomains:()=>K,getToolsForProfile:()=>q,parseToolDomains:()=>G});let F=null,I=null,L=null,R=null;function z(){return F||=k(),F}function B(){F=null}function V(){return I||=A(),I}function H(){return L||=N(),L}const U=new Proxy([],{get(e,t){R||=j();let n=R,r=n[t];return typeof r==`function`?r.bind(n):r}});function W(e){let t=new Map;for(let n of e)t.set(n.name,n);return Array.from(t.values())}function G(e){if(!e?.trim())return null;let t=D(),n=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean).filter(e=>t.has(e));return n.length>0?Array.from(new Set(n)):null}function K(e){return W(e.flatMap(e=>z()[e]??[]))}function q(e){let t=H()[e];if(!t)return[];let n=new Set(t);return W([...E()].filter(t=>!(!n.has(t.domain)||t.profiles&&!t.profiles.includes(e))).map(e=>e.tool))}function J(e){return V().get(e)??null}function Y(e){return H()[e]??[]}export{c as _,K as a,M as c,D as d,O as f,d as g,b as h,J as i,S as l,E as m,U as n,q as o,T as p,Y as r,G as s,P as t,x as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./ToolCatalog-DgmQXdsm.mjs";function t(t,n){return e(t,n)}export{t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./logger-
|
|
1
|
+
import"./logger-CCikqqvj.mjs";import{Kt as e}from"./constants-DMv3svps.mjs";import{promisify as t}from"node:util";import{execFile as n}from"node:child_process";const r=t(n);async function i(t,n=[`--version`],i=e){try{let{stdout:e}=await r(process.platform===`win32`?`where`:`which`,[t],{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0],o;try{let{stdout:e}=await r(t,n,{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0];o=a?a.substring(0,100):void 0}catch{}return{available:!0,path:a,version:o}}catch(e){let n=typeof e==`object`&&e&&`code`in e?e.code:void 0,r=e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message??``):String(e??``);return{available:!1,reason:n===`ENOENT`?`Command '${t}' not found in PATH`:`Probe failed: ${r.substring(0,200)}`}}}export{i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{Gt as t}from"./constants-DMv3svps.mjs";import{t as n}from"./ToolProbe-DQiREmNp.mjs";const r=[{name:`wabt.wasm2wat`,command:`wasm2wat`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-objdump`,command:`wasm-objdump`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-decompile`,command:`wasm-decompile`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm2c`,command:`wasm2c`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`binaryen.wasm-opt`,command:`wasm-opt`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmtime`,command:`wasmtime`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmer`,command:`wasmer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`miniapp.unpacker`,command:`unveilr`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`platform.jadx`,command:`jadx`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.ast-grep`,command:`ast-grep`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.wakaru`,command:`wakaru`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.restringer`,command:`restringer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.z3`,command:`z3`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.strace`,command:`strace`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.bpftrace`,command:`bpftrace`,versionArgs:[`--version`],required:!1,envAllowlist:[]}];var i=class{specs=new Map;probeCache=new Map;probeCacheExpiry=0;PROBE_CACHE_TTL=t;constructor(e){for(let e of r)this.specs.set(e.name,e);if(e)for(let t of e)this.specs.set(t.name,t)}getSpec(e){let t=this.specs.get(e);if(!t)throw Error(`Tool '${e}' is not registered in the allowlist`);return t}isRegistered(e){return this.specs.has(e)}getRegisteredTools(){return Array.from(this.specs.keys())}async probeAll(t=!1){let r=Date.now();if(!t&&this.probeCache.size>0&&r<this.probeCacheExpiry)return Object.fromEntries(this.probeCache);let i={},a=[];for(let[e,t]of this.specs)a.push(n(t.command,t.versionArgs).then(t=>{i[e]=t,this.probeCache.set(e,t)}));await Promise.all(a),this.probeCacheExpiry=r+this.PROBE_CACHE_TTL;let o=Object.values(i).filter(e=>e.available).length;return e.info(`[ToolRegistry] Probed ${this.specs.size} tools: ${o} available`),i}getCachedProbe(e){return this.probeCache.get(e)}register(t){this.specs.set(t.name,t),this.probeCache.delete(t.name),e.debug(`[ToolRegistry] Registered tool: ${t.name} -> ${t.command}`)}};export{i as t};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Ar as e,Cr as t,Dr as n,Er as r,Or as i,Tr as a,jr as o,kr as s,wr as c}from"./constants-DMv3svps.mjs";import{i as l,n as u,p as d}from"./ToolCatalog-DgmQXdsm.mjs";import{t as f}from"./MCPServer.search.validation-DnifPCCv.mjs";const p=/(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i,m=/(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i,h=/(stateless|deterministic|pure compute|offline|decode|encode|hex|base64|protobuf|msgpack|checksum|hash|payload|frame|packet|bytes?|bytecode|pcap|protocol|state machine|field inference|ast transform|crypto harness|无状态|确定性|纯算|离线|解码|编码|十六进制|校验和|载荷|字节|协议|报文|帧|字段推断|状态机|构包)/i;let g=null;const _=new Map;function v(){if(g)return g;let e=[];for(let t of d())t.workflowRule&&e.push({patterns:[...t.workflowRule.patterns],domain:t.domain,priority:t.workflowRule.priority,tools:[...t.workflowRule.tools],hint:t.workflowRule.hint});return g=[...e].toSorted((e,t)=>t.priority-e.priority),_.clear(),g}function y(e){let t=_.get(e);if(t!==void 0)return t;let n=[];for(let t of v())for(let r of t.patterns)if(r.test(e)){n.push(t);break}let r=n.length===0?null:n.toSorted((e,t)=>t.priority-e.priority)[0];if(_.size>=64){let e=_.keys().next().value;e!==void 0&&_.delete(e)}return _.set(e,r),r}function b(e,t){let n=null;for(let[r,i]of t.extensionWorkflowRuntimeById.entries()){let a=i.route??i.workflow.route;if(!a)continue;let o=t.extensionWorkflowsById.get(r),s=o?.displayName??i.workflow.displayName,c=o?.description??i.workflow.description??`Workflow route`;for(let t of a.triggerPatterns){if(!t.test(e))continue;let i=a.priority/100;(!n||i>n.confidence)&&(n={workflow:{id:r,name:s,description:c,route:a},confidence:i,matchedPattern:t.source});break}}return n}function x(e,t){return t?.domain!==`browser`&&t?.domain!==`network`&&C(e)?!1:t?.domain===`browser`||t?.domain===`network`||p.test(e)}function S(e){return m.test(e)}function C(e){return h.test(e)}function w(e,t){if(e.length<2)return null;let n=d();if(n.length===0)return null;let r=new Map,i=new Map;for(let e of n)if(e.toolDependencies)for(let a of e.toolDependencies){let e=new Set(E(a,n)),o=T(a.from,n),s=T(a.to,n);if(o&&s&&o!==s){let e=r.get(o)??new Set;e.add(s),r.set(o,e);let n=i.get(o)??new Set;n.add(a.from),t.has(a.to)&&n.add(a.to),i.set(o,n)}for(let t of e)if(t!==o&&o){let e=r.get(o)??new Set;e.add(t),r.set(o,e)}}let a=new Set;for(let t of e)t.domain&&a.add(t.domain);if(a.size<2)return null;let o=[...a];for(let e=0;e<o.length;e++)for(let i=e+1;i<o.length;i++){let a=o[e],s=o[i];if(!(r.get(a)?.has(s)||r.get(s)?.has(a)))continue;let c=new Set;for(let e of n)if(e.toolDependencies)for(let r of e.toolDependencies){let e=T(r.from,n),i=T(r.to,n);(e===a&&i===s||e===s&&i===a)&&(t.has(r.from)&&c.add(r.from),t.has(r.to)&&c.add(r.to))}let l=[...c];if(!(l.length<2))return{id:`dynamic-${a}-${s}`,hint:`${a} ↔ ${s} (declared dependency)`,domains:[a,s],tools:l.slice(0,5),priority:75}}return null}function T(e,t){for(let n of t)for(let t of n.registrations)if(t.tool.name===e)return t.domain??n.domain;return null}function E(e,t){return[T(e.from,t),T(e.to,t)].filter(e=>e!==null)}let D=null;function O(){return D||=new Map(u.map(e=>[e.name,e])),D}function k(e,t){let n=f(e),r=O().get(n);if(r)return r.inputSchema;let i=t.extensionToolsByName.get(n);if(i)return i.tool.inputSchema;let a=t.metaToolsByName.get(n);if(a)return a.inputSchema}function A(e,t){let n=f(e),r=O().get(n);if(r?.description)return r.description.split(`
|
|
2
|
+
`)[0]||`No description available`;let i=t.extensionToolsByName.get(n);if(i?.tool?.description)return i.tool.description.split(`
|
|
3
|
+
`)[0]||`No description available`;let a=t.metaToolsByName.get(n);return a?.description&&a.description.split(`
|
|
4
|
+
`)[0]||`No description available`}function j(e,t){let n=f(e);return new Set([...t.selectedTools.map(e=>e.name),...t.activatedToolNames]).has(n)}function M(e){return new Set([...u.map(e=>e.name),...e.extensionToolsByName.keys()])}function N(e,t){return l(e)??t.extensionToolsByName.get(e)?.domain??null}async function P(e){if(!e.pageController||typeof e.pageController.getPage!=`function`)return!1;try{return!!await e.pageController.getPage()}catch{return!1}}function F(e){if(!e.consoleMonitor)return!1;try{if(typeof e.consoleMonitor.getNetworkStatus==`function`)return!!e.consoleMonitor.getNetworkStatus().enabled;if(typeof e.consoleMonitor.isNetworkEnabled==`function`)return!!e.consoleMonitor.isNetworkEnabled()}catch{}return!1}function I(e){if(!e.consoleMonitor||typeof e.consoleMonitor.getNetworkRequests!=`function`)return 0;try{let t=e.consoleMonitor.getNetworkRequests({limit:1});return Array.isArray(t)?t.length:0}catch{try{let t=e.consoleMonitor.getNetworkRequests();return Array.isArray(t)?t.length:0}catch{return 0}}}async function L(e){return{hasActivePage:await P(e),networkEnabled:F(e),capturedRequestCount:I(e)}}function R(e,t){if(!C(e))return[];let n=[],r=(e,r)=>{t.has(e)&&!n.some(t=>t.name===e)&&n.push({name:e,description:r})};return r(`binary_detect_format`,`Detect the payload encoding or container before decoding`),r(`binary_decode`,`Decode the payload into deterministic offline bytes or structured output`),r(`proto_auto_detect`,`Infer a likely protocol layout from repeated payload samples`),r(`proto_infer_fields`,`Derive stable field boundaries and candidate semantics`),r(`proto_infer_state_machine`,`Infer request/response state transitions from repeated samples`),r(`crypto_test_harness`,`Validate extracted signing or crypto logic with deterministic test vectors`),r(`crypto_compare`,`Compare competing crypto implementations against the same vectors`),r(`network_get_requests`,`Collect request or response samples only if payload bytes still need to be extracted`),n}function z(e){return e.includes(`Browser must be launched`)?e=>e.hasActivePage:e.includes(`Network monitoring must be enabled`)?e=>e.networkEnabled:e.includes(`Debugger must be enabled`)||e.includes(`Debugger must be attached`)||e.includes(`Page must be navigated`)||e.includes(`WebSocket monitoring`)?e=>e.hasActivePage:()=>!1}let B=null;function V(){if(B)return B;let e={};for(let t of d())if(t.prerequisites)for(let[n,r]of Object.entries(t.prerequisites))e[n]=r.map(e=>({condition:e.condition,check:z(e.condition),fix:e.fix}));return B=e,B}function H(e,t,n){let r=[],i=e=>{n.has(e)&&!r.includes(e)&&r.push(e)};(e.domain===`browser`||e.domain===`network`)&&!t.hasActivePage&&(i(`browser_launch`),i(`browser_attach`)),e.domain===`network`&&(t.hasActivePage&&!t.networkEnabled&&i(`network_monitor`),t.hasActivePage&&t.networkEnabled&&t.capturedRequestCount>0&&i(`network_get_requests`));for(let t of e.tools)i(t);return e.domain===`network`&&t.hasActivePage&&t.networkEnabled&&i(`network_get_requests`),r}function U(e,t,n){let r=[],i=new Set,a=e.workflow.route.requiredDomains.includes(`browser`)||e.workflow.route.requiredDomains.includes(`network`),o=(e,t)=>{!n.has(e)||i.has(e)||(i.add(e),r.push({name:e,description:t}))};!t.hasActivePage&&a&&(o(`browser_launch`,`Launch a browser session before executing the preset`),o(`browser_attach`,`Attach preset tooling to the active browser session before capture begins`));for(let t of e.workflow.route.steps)o(t.toolName,t.description);return r}function W(e,t,n,r){return U(e,t,r).map((t,r)=>({name:t.name,domain:N(t.name,n),shortDescription:t.description,score:e.workflow.route.priority+e.confidence-r*.01,isActive:j(t.name,n)}))}function G(e,t,n){return R(e,n).map((e,n)=>({name:e.name,domain:N(e.name,t),shortDescription:e.description,score:90-n*.01,isActive:j(e.name,t)}))}function K(e,t){return{name:`run_extension_workflow`,domain:N(`run_extension_workflow`,t),shortDescription:`Execute routed workflow ${e.workflow.name} (${e.workflow.id}) via run_extension_workflow`,score:e.workflow.route.priority+e.confidence,isActive:j(`run_extension_workflow`,t)}}function q(e,t){return{kind:e.workflow.route.kind,id:e.workflow.id,name:e.workflow.name,description:e.workflow.description,confidence:e.confidence,matchedPattern:e.matchedPattern,requiredDomains:[...e.workflow.route.requiredDomains],steps:e.workflow.route.steps.map(e=>({id:e.id,toolName:e.toolName,domain:l(e.toolName)??t.extensionToolsByName.get(e.toolName)?.domain??null,description:e.description,prerequisites:[...e.prerequisites],parallel:e.parallel,isActive:j(e.toolName,t)}))}}function J(l,u,d,f){let p=x(u,d),m=S(u),h=C(u),g=l.map(l=>{let u=l.score;return p&&!m&&l.domain===`maintenance`&&(u*=a),h&&((l.domain===`browser`||l.domain===`network`||l.domain===`debugger`||l.domain===`instrumentation`||l.domain===`maintenance`)&&(u*=e),(l.domain===`core`||l.domain===`streaming`||l.domain===`workflow`)&&(u*=s),(l.domain===`encoding`||l.domain===`transform`||l.domain===`protocol-analysis`||l.domain===`sourcemap`||l.domain===`core`)&&(u*=i),(l.name===`binary_detect_format`||l.name===`binary_decode`||l.name===`crypto_test_harness`||l.name===`ast_transform_apply`||l.name===`proto_auto_detect`||l.name===`proto_infer_fields`||l.name===`proto_infer_state_machine`||l.name===`proto_fingerprint`)&&(u*=o)),p&&(!f.hasActivePage&&l.name===`browser_launch`&&(u*=c),!f.hasActivePage&&l.name===`browser_attach`&&(u*=t),f.hasActivePage&&!f.networkEnabled&&l.name===`network_monitor`&&(u*=n),f.hasActivePage&&f.networkEnabled&&f.capturedRequestCount>0&&l.name===`network_get_requests`&&(u*=r)),{...l,score:u}});return g.sort((e,t)=>t.score-e.score),g}export{S as _,H as a,M as c,N as d,k as f,x as g,y as h,K as i,L as l,w as m,q as n,V as o,j as p,G as r,J as s,W as t,A as u,C as v,b as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-
|
|
1
|
+
import{n as e}from"./chunk-88NL7fhV.mjs";import{i as t}from"./artifacts-D-4pSS_N.mjs";import{t as n}from"./betterSqlite3-Bdo_ifuJ.mjs";import{writeFile as r}from"node:fs/promises";import{randomUUID as i}from"node:crypto";const a={Debugger:[`Debugger.paused`,`Debugger.resumed`,`Debugger.scriptParsed`],Runtime:[`Runtime.consoleAPICalled`,`Runtime.exceptionThrown`],Network:[`Network.requestWillBeSent`,`Network.requestServedFromCache`,`Network.responseReceived`,`Network.dataReceived`,`Network.loadingFinished`,`Network.loadingFailed`,`Network.eventSourceMessageReceived`,`Network.webSocketCreated`,`Network.webSocketWillSendHandshakeRequest`,`Network.webSocketHandshakeResponseReceived`,`Network.webSocketFrameReceived`,`Network.webSocketFrameSent`,`Network.webSocketFrameError`,`Network.webSocketClosed`],Page:[`Page.navigatedWithinDocument`,`Page.loadEventFired`]},o=[`Debugger`,`Runtime`,`Network`,`Page`],s={recordResponseBodies:!0,streamResponseChunks:!0,maxBodyBytes:10*1024*1024,inlineBodyBytes:256*1024},c=16*1024,l=e=>typeof e==`object`&&!!e,u=e=>typeof e==`string`?e:null,d=e=>typeof e==`number`&&Number.isFinite(e)?e:null,f=e=>{let t=d(e);return t===null?null:t>0xe8d4a51000?t:t*1e3},p=e=>l(e)&&typeof e.body==`string`&&typeof e.base64Encoded==`boolean`,m=e=>{let t=Date.now();if(!l(e))return{timestamp:t,wallTime:t,monotonicTime:null};let n=f(e.wallTime),r=f(e.timestamp);return{timestamp:n??t,wallTime:n??t,monotonicTime:r}},h=e=>l(e)&&typeof e.requestId==`string`?e.requestId:null,g=(e,t)=>{let n=null,r=null;if(!l(t))return{scriptId:n,lineNumber:r};if(`scriptId`in t&&(n=String(t.scriptId)),`lineNumber`in t&&(r=Number(t.lineNumber)||null),e===`Debugger.paused`&&Array.isArray(t.callFrames)){let e=t.callFrames[0];if(e){let t=e.location;t&&(n=String(t.scriptId??n),r=Number(t.lineNumber??r)||null)}}return{scriptId:n,lineNumber:r}},_=(e,t)=>{if(!l(t))return t??{};let n={...t};if(e===`Network.dataReceived`&&typeof n.data==`string`){let e=n.data;n.hasChunkData=!0,n.chunkDataBytes=Buffer.byteLength(e,`utf8`),n.data=`[captured in network_chunks]`}if(e===`Network.eventSourceMessageReceived`&&typeof n.data==`string`&&Buffer.byteLength(n.data,`utf8`)>c&&(n.data=`${n.data.slice(0,c)}...[truncated]`,n.truncatedData=!0),(e===`Network.webSocketFrameReceived`||e===`Network.webSocketFrameSent`)&&l(n.response)&&typeof n.response.payloadData==`string`){let e={...n.response},t=e.payloadData;Buffer.byteLength(t,`utf8`)>c&&(e.payloadData=`${t.slice(0,c)}...[truncated]`,e.truncatedPayloadData=!0,n.response=e)}return n},v=e=>{let t=u(e.remoteIPAddress),n=d(e.remotePort);return t?n===null?t:`${t}:${n}`:null},y=e=>({requestId:e,url:null,method:null,resourceType:null,requestHeaders:`{}`,requestPostData:null,status:null,statusText:null,responseHeaders:`{}`,mimeType:null,protocol:null,remoteAddress:null,fromDiskCache:!1,fromServiceWorker:!1,startedWallTime:null,responseWallTime:null,finishedWallTime:null,startedMonotonicTime:null,responseMonotonicTime:null,finishedMonotonicTime:null,encodedDataLength:null,receivedDataLength:0,receivedEncodedDataLength:0,chunkCount:0,streamingEnabled:!1,streamingSupported:null,streamingError:null,bodyCaptureState:`none`,bodyInline:null,bodyArtifactPath:null,bodyBase64Encoded:!1,bodySize:null,bodyTruncated:!1,bodyError:null,failed:!1,errorText:null});var b=class{deps;resources=new Map;options={...s};counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0};constructor(e){this.deps=e}configure(e){return this.resources.clear(),this.counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0},this.options={...s,...e},this.getOptions()}clear(){this.resources.clear(),this.counts={networkRequestCount:0,networkChunkCount:0,networkBodyCount:0}}getOptions(){return{...this.options}}getCounts(){return{...this.counts}}handleEvent(e,t,n){let r=h(t);if(r)switch(e){case`Network.requestWillBeSent`:this.handleRequestWillBeSent(r,t,n);return;case`Network.requestServedFromCache`:this.handleRequestServedFromCache(r);return;case`Network.responseReceived`:this.handleResponseReceived(r,t,n);return;case`Network.dataReceived`:this.handleDataReceived(r,t,n);return;case`Network.loadingFinished`:this.handleLoadingFinished(r,t,n);return;case`Network.loadingFailed`:this.handleLoadingFailed(r,t,n);return;default:return}}handleRequestWillBeSent(e,t,n){let r=this.getOrCreateResource(e),i=l(t)&&l(t.request)?t.request:null;r.url=i?u(i.url):r.url,r.method=i?u(i.method):r.method,r.resourceType=l(t)&&typeof t.type==`string`?t.type:r.resourceType,r.requestHeaders=i?JSON.stringify(i.headers??{}):r.requestHeaders,r.requestPostData=i?u(i.postData):r.requestPostData,r.startedWallTime=n.wallTime??r.startedWallTime??n.timestamp,r.startedMonotonicTime=n.monotonicTime??r.startedMonotonicTime,this.syncResource(r)}handleRequestServedFromCache(e){let t=this.getOrCreateResource(e);t.fromDiskCache=!0,this.syncResource(t)}handleResponseReceived(e,t,n){let r=this.getOrCreateResource(e),i=l(t)&&l(t.response)?t.response:null;r.url=i?u(i.url)??r.url:r.url,r.status=i?d(i.status):r.status,r.statusText=i?u(i.statusText):r.statusText,r.responseHeaders=i?JSON.stringify(i.headers??{}):r.responseHeaders,r.mimeType=i?u(i.mimeType):r.mimeType,r.protocol=i?u(i.protocol):r.protocol,r.remoteAddress=i?v(i):r.remoteAddress,r.fromDiskCache=i?!!i.fromDiskCache:r.fromDiskCache,r.fromServiceWorker=i?!!i.fromServiceWorker:r.fromServiceWorker,r.responseWallTime=n.wallTime??r.responseWallTime??n.timestamp,r.responseMonotonicTime=n.monotonicTime??r.responseMonotonicTime,this.syncResource(r),this.options.streamResponseChunks&&r.streamingSupported===null&&this.deps.trackOperation(this.enableStreamingForRequest(e))}handleDataReceived(e,t,n){let r=this.getOrCreateResource(e),i=l(t)?t:null,a=i?d(i.dataLength)??0:0,o=i?d(i.encodedDataLength)??0:0,s=i?u(i.data):null;r.receivedDataLength+=a,r.receivedEncodedDataLength+=o,r.chunkCount+=1;let c=r.receivedDataLength<=this.options.maxBodyBytes,f={requestId:e,sequence:r.chunkCount,timestamp:n.timestamp,monotonicTime:n.monotonicTime,dataLength:a,encodedDataLength:o,chunkData:c?s:null,chunkIsBase64:s!==null};try{this.deps.getDb()?.insertNetworkChunk(f),this.counts.networkChunkCount++}catch{}this.syncResource(r)}handleLoadingFinished(e,t,n){let r=this.getOrCreateResource(e);r.finishedWallTime=n.wallTime??n.timestamp,r.finishedMonotonicTime=n.monotonicTime??r.finishedMonotonicTime,l(t)&&(r.encodedDataLength=d(t.encodedDataLength)??r.encodedDataLength),this.syncResource(r),this.options.recordResponseBodies&&this.deps.trackOperation(this.captureResponseBody(e))}handleLoadingFailed(e,t,n){let r=this.getOrCreateResource(e);r.finishedWallTime=n.wallTime??n.timestamp,r.finishedMonotonicTime=n.monotonicTime??r.finishedMonotonicTime,r.failed=!0,r.errorText=l(t)?u(t.errorText):null,this.syncResource(r)}async enableStreamingForRequest(e){let t=this.deps.getCdpSession(),n=this.deps.getDb();if(!t||!n||!this.options.streamResponseChunks)return;let r=this.resources.get(e);if(!(!r||r.streamingSupported!==null))try{let i=await t.send(`Network.streamResourceContent`,{requestId:e});if(r.streamingEnabled=!0,r.streamingSupported=!0,r.streamingError=null,l(i)){let t=u(i.bufferedData);if(t){let i=Buffer.from(t,`base64`).length,a={requestId:e,sequence:r.chunkCount+1,timestamp:Date.now(),monotonicTime:r.responseMonotonicTime,dataLength:i,encodedDataLength:i,chunkData:r.receivedDataLength+i<=this.options.maxBodyBytes?t:null,chunkIsBase64:!0};r.chunkCount+=1,r.receivedDataLength+=i,r.receivedEncodedDataLength+=i,n.insertNetworkChunk(a),this.counts.networkChunkCount++}}}catch(e){r.streamingEnabled=!1,r.streamingSupported=!1,r.streamingError=e instanceof Error?e.message:String(e)}finally{this.syncResource(r)}}async captureResponseBody(e){let n=this.deps.getCdpSession();if(!n||!this.deps.getDb()||!this.options.recordResponseBodies)return;let i=this.resources.get(e);if(i)try{let a=await n.send(`Network.getResponseBody`,{requestId:e});if(!p(a))return;if(i.bodyBase64Encoded=a.base64Encoded,i.bodySize=a.base64Encoded?Buffer.from(a.body,`base64`).length:Buffer.byteLength(a.body,`utf8`),i.bodyTruncated=i.bodySize>this.options.maxBodyBytes,i.bodyTruncated)i.bodyCaptureState=`truncated`,i.bodyInline=a.body.slice(0,this.options.inlineBodyBytes),i.bodyArtifactPath=null,i.bodyError=`Body exceeded configured maxBodyBytes (${this.options.maxBodyBytes})`;else if(i.bodySize<=this.options.inlineBodyBytes)i.bodyCaptureState=`inline`,i.bodyInline=a.body,i.bodyArtifactPath=null,i.bodyError=null;else{let n=a.base64Encoded?`b64`:`txt`,{absolutePath:o}=await t({category:`traces`,toolName:`trace_body`,target:e.slice(0,32),ext:n});await r(o,a.body,`utf8`),i.bodyCaptureState=`artifact`,i.bodyInline=null,i.bodyArtifactPath=o,i.bodyError=null}this.counts.networkBodyCount++}catch(e){i.bodyCaptureState=i.bodyCaptureState===`none`?`error`:i.bodyCaptureState,i.bodyError=e instanceof Error?e.message:String(e)}finally{this.syncResource(i)}}getOrCreateResource(e){let t=this.resources.get(e);if(t)return t;let n=y(e);return this.resources.set(e,n),this.counts.networkRequestCount++,n}syncResource(e){try{this.deps.getDb()?.upsertNetworkResource(e)}catch{}}};function x(e){e.exec(`
|
|
2
2
|
CREATE TABLE IF NOT EXISTS events (
|
|
3
3
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
4
4
|
timestamp REAL NOT NULL,
|
|
@@ -269,4 +269,4 @@ import{n as e}from"./chunk-C_pMuVsO.mjs";import{i as t}from"./artifacts-CkodUM4j
|
|
|
269
269
|
SELECT id, timestamp, snapshot_data, summary
|
|
270
270
|
FROM heap_snapshots
|
|
271
271
|
ORDER BY timestamp ASC
|
|
272
|
-
`).all().map(e=>({id:e.id,timestamp:e.timestamp,snapshotData:e.snapshot_data,summary:e.summary}))}getMetadata(){this.ensureOpen();let e=this.db.prepare(`SELECT key, value FROM metadata`).all(),t={};for(let n of e)t[n.key]=n.value;return t}close(){this.closed||=(this.flush(),this.db.close(),!0)}get isClosed(){return this.closed}fromSqliteBoolean(e){return e===1||e===!0}ensureOpen(){if(this.closed)throw Error(`TraceDB is closed`)}},A=class{db=null;state=`idle`;session=null;eventBusUnsub=null;cdpListeners=new Map;enabledCdpDomains=new Set;cdpSession=null;ownsCdpSession=!1;eventCount=0;memoryDeltaCount=0;heapSnapshotCount=0;eventSequence=0;pendingOperations=new Set;networkCapture=new b({getDb:()=>this.db,getCdpSession:()=>this.cdpSession,trackOperation:e=>this.trackOperation(e)});async start(e,n,
|
|
272
|
+
`).all().map(e=>({id:e.id,timestamp:e.timestamp,snapshotData:e.snapshot_data,summary:e.summary}))}getMetadata(){this.ensureOpen();let e=this.db.prepare(`SELECT key, value FROM metadata`).all(),t={};for(let n of e)t[n.key]=n.value;return t}close(){this.closed||=(this.flush(),this.db.close(),!0)}get isClosed(){return this.closed}fromSqliteBoolean(e){return e===1||e===!0}ensureOpen(){if(this.closed)throw Error(`TraceDB is closed`)}},A=class{db=null;state=`idle`;session=null;eventBusUnsub=null;cdpListeners=new Map;enabledCdpDomains=new Set;cdpSession=null;ownsCdpSession=!1;eventCount=0;memoryDeltaCount=0;heapSnapshotCount=0;eventSequence=0;pendingOperations=new Set;networkCapture=new b({getDb:()=>this.db,getCdpSession:()=>this.cdpSession,trackOperation:e=>this.trackOperation(e)});async start(e,n,r){if(this.state===`recording`)throw Error(`Recording already in progress`);let s=i(),{absolutePath:c}=await t({category:`traces`,toolName:`trace_recorder`,target:s.slice(0,8),ext:`db`}),l=n?(r?.cdpDomains??o).filter(e=>a[e]):[];this.db=new k({dbPath:c}),this.eventCount=0,this.memoryDeltaCount=0,this.heapSnapshotCount=0,this.eventSequence=0,this.pendingOperations.clear(),this.cdpListeners.clear(),this.enabledCdpDomains.clear(),this.cdpSession=n,this.ownsCdpSession=r?.ownsSession??!1;try{let t=this.networkCapture.configure(r?.network);if(n)for(let e of l)await n.send(`${e}.enable`),this.enabledCdpDomains.add(e);let i=Date.now();if(this.db.setMetadata(`sessionId`,s),this.db.setMetadata(`platform`,process.platform),this.db.setMetadata(`startedAt`,String(i)),this.db.setMetadata(`nodeVersion`,process.version),this.db.setMetadata(`network.recordResponseBodies`,String(t.recordResponseBodies)),this.db.setMetadata(`network.streamResponseChunks`,String(t.streamResponseChunks)),this.db.setMetadata(`network.maxBodyBytes`,String(t.maxBodyBytes)),this.db.setMetadata(`network.inlineBodyBytes`,String(t.inlineBodyBytes)),this.eventBusUnsub=e.onAny(e=>{if(this.state===`recording`)try{let t=Date.now();this.db?.insertEvent({timestamp:t,wallTime:t,monotonicTime:null,category:this.mapEventCategory(String(e.event)),eventType:String(e.event),data:JSON.stringify(e.payload??{}),scriptId:null,lineNumber:null,requestId:null,sequence:this.nextSequence()}),this.eventCount++}catch{}}),n)for(let e of l){let t=a[e]??[];for(let r of t){let t=t=>{if(!(this.state!==`recording`||!this.db))try{let n=m(t),i=h(t),{scriptId:a,lineNumber:o}=g(r,t),s=JSON.stringify(_(r,t));this.db.insertEvent({timestamp:n.timestamp,wallTime:n.wallTime,monotonicTime:n.monotonicTime,category:e.toLowerCase(),eventType:r,data:s,scriptId:a,lineNumber:o,requestId:i,sequence:this.nextSequence()}),this.eventCount++,e===`Network`&&this.networkCapture.handleEvent(r,t,n)}catch{}};n.on(r,t),this.cdpListeners.set(r,t)}}return this.session={sessionId:s,dbPath:c,startedAt:i,eventCount:0,memoryDeltaCount:0,heapSnapshotCount:0,...this.networkCapture.getCounts()},this.state=`recording`,{...this.session}}catch(e){throw await this.cleanupFailedStart(),e}}recordMemoryDelta(e){if(!(this.state!==`recording`||!this.db))try{this.db.insertMemoryDelta(e),this.memoryDeltaCount++}catch{}}async captureActiveHeapSnapshot(){if(!this.cdpSession)throw Error(`Cannot capture heap snapshot: no active CDP session`);return await this.captureHeapSnapshot(this.cdpSession)}async captureHeapSnapshot(e){if(this.state!==`recording`||!this.db)throw Error(`Cannot capture heap snapshot: not recording`);let t=[],n=!1,r=e=>{if(typeof e==`object`&&e){let n=e.chunk;typeof n==`string`&&t.push(n)}};try{await e.send(`HeapProfiler.enable`),e.on(`HeapProfiler.addHeapSnapshotChunk`,r),n=!0,await e.send(`HeapProfiler.takeHeapSnapshot`,{reportProgress:!1});let i=t.join(``),a=Buffer.from(i,`utf-8`),o=this.extractHeapSummary(i);return this.db.insertHeapSnapshot({timestamp:Date.now(),snapshotData:a,summary:JSON.stringify(o)}),this.heapSnapshotCount++,a.byteLength}finally{n&&e.off(`HeapProfiler.addHeapSnapshotChunk`,r),await e.send(`HeapProfiler.disable`).catch(()=>{})}}async stop(){if(this.state!==`recording`)throw Error(`GRACEFUL: Cannot stop: not currently recording`);if(this.eventBusUnsub&&=(this.eventBusUnsub(),null),this.cdpSession)for(let[e,t]of this.cdpListeners)this.cdpSession.off(e,t);this.cdpListeners.clear(),await this.waitForPendingOperations();let e;if(this.cdpSession){if(this.enabledCdpDomains.size>0){let t=Array.from(this.enabledCdpDomains);e=(await Promise.allSettled(t.map(e=>this.cdpSession.send(`${e}.disable`)))).flatMap((e,n)=>e.status===`rejected`?[`${t[n]}.disable failed: ${e.reason instanceof Error?e.reason.message:String(e.reason)}`]:[])}if(this.enabledCdpDomains.clear(),this.ownsCdpSession&&typeof this.cdpSession.detach==`function`)try{await this.cdpSession.detach()}catch(t){(e??=[]).push(`cdpSession.detach failed: ${t instanceof Error?t.message:String(t)}`)}this.cdpSession=null,this.ownsCdpSession=!1}if(this.db){let t=Date.now(),n=this.networkCapture.getCounts();this.db.setMetadata(`stoppedAt`,String(t)),this.db.setMetadata(`eventCount`,String(this.eventCount)),this.db.setMetadata(`memoryDeltaCount`,String(this.memoryDeltaCount)),this.db.setMetadata(`heapSnapshotCount`,String(this.heapSnapshotCount)),this.db.setMetadata(`networkRequestCount`,String(n.networkRequestCount)),this.db.setMetadata(`networkChunkCount`,String(n.networkChunkCount)),this.db.setMetadata(`networkBodyCount`,String(n.networkBodyCount)),this.db.close(),this.session&&(this.session.stoppedAt=t,this.session.eventCount=this.eventCount,this.session.memoryDeltaCount=this.memoryDeltaCount,this.session.heapSnapshotCount=this.heapSnapshotCount,this.session.networkRequestCount=n.networkRequestCount,this.session.networkChunkCount=n.networkChunkCount,this.session.networkBodyCount=n.networkBodyCount,e&&e.length>0?this.session.cleanupErrors=e:delete this.session.cleanupErrors)}this.state=`stopped`;let t=this.session?{...this.session}:this.createEmptySession();return this.db=null,this.networkCapture.clear(),t}getState(){return this.state}getSession(){return this.session?{...this.session}:null}getDB(){return this.db}trackOperation(e){this.pendingOperations.add(e),e.finally(()=>{this.pendingOperations.delete(e)})}async waitForPendingOperations(){for(;this.pendingOperations.size>0;)await Promise.allSettled(Array.from(this.pendingOperations))}async cleanupFailedStart(){if(this.eventBusUnsub&&=(this.eventBusUnsub(),null),this.cdpSession)for(let[e,t]of this.cdpListeners)this.cdpSession.off(e,t);if(this.cdpListeners.clear(),this.cdpSession&&this.enabledCdpDomains.size>0&&await Promise.allSettled(Array.from(this.enabledCdpDomains).map(e=>this.cdpSession.send(`${e}.disable`))),this.enabledCdpDomains.clear(),this.cdpSession&&this.ownsCdpSession&&typeof this.cdpSession.detach==`function`&&await this.cdpSession.detach().catch(()=>{}),this.cdpSession=null,this.ownsCdpSession=!1,this.db){try{this.db.close()}catch{}this.db=null}this.session=null,this.state=`idle`,this.eventCount=0,this.memoryDeltaCount=0,this.heapSnapshotCount=0,this.eventSequence=0,this.pendingOperations.clear(),this.networkCapture.clear()}nextSequence(){return this.eventSequence+=1,this.eventSequence}mapEventCategory(e){let t=e.indexOf(`:`);return t>0?e.substring(0,t):`other`}extractHeapSummary(e){try{let t=JSON.parse(e),n=t.snapshot;if(!n)return{totalSize:0,nodeCount:0,objectCounts:{}};let r=n.meta,i=n.node_count??0,a=r?.node_fields,o=r?.node_types,s=t.nodes,c={},l=0;if(a&&s&&o){let e=a.length,n=a.indexOf(`type`),r=a.indexOf(`name`),i=a.indexOf(`self_size`),o=t.strings??[];for(let t=0;t<s.length;t+=e){let e=i>=0?s[t+i]??0:0;if(l+=e,r>=0){let e=o[s[t+r]??0]??`type_${s[t+(n>=0?n:0)]}`;e&&(c[e]=(c[e]??0)+1)}}}return{totalSize:l,nodeCount:i,objectCounts:c}}catch{return{totalSize:0,nodeCount:0,objectCounts:{}}}}createEmptySession(){return{sessionId:``,dbPath:``,startedAt:0,eventCount:0,memoryDeltaCount:0,heapSnapshotCount:0,networkRequestCount:0,networkChunkCount:0,networkBodyCount:0}}};export{A as TraceRecorder,k as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./manifest-G2H52LKz.mjs";export{e as VersionDetector};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-88NL7fhV.mjs";import{t}from"./logger-CCikqqvj.mjs";import n from"koffi";var r=e({CloseHandle:()=>v,CreateRemoteThread:()=>T,EnumProcessModules:()=>A,GetLastError:()=>O,GetModuleBaseName:()=>j,GetModuleFileNameEx:()=>M,GetModuleHandle:()=>E,GetModuleInformation:()=>N,GetProcAddress:()=>D,MEM:()=>a,NtQueryInformationProcess:()=>k,OpenProcess:()=>_,PAGE:()=>o,PROCESS_ACCESS:()=>i,ReadProcessMemory:()=>y,VirtualAllocEx:()=>C,VirtualFreeEx:()=>w,VirtualProtectEx:()=>S,VirtualQueryEx:()=>x,WriteProcessMemory:()=>b,isKoffiAvailable:()=>d,isWindows:()=>f,openProcessForMemory:()=>P});const i={TERMINATE:1,CREATE_THREAD:2,SET_SESSIONID:4,VM_OPERATION:8,VM_READ:16,VM_WRITE:32,DUP_HANDLE:64,CREATE_PROCESS:128,SET_QUOTA:256,SET_INFORMATION:512,QUERY_INFORMATION:1024,SUSPEND_RESUME:2048,QUERY_LIMITED_INFORMATION:4096,ALL_ACCESS:2035711},a={COMMIT:4096,RESERVE:8192,DECOMMIT:16384,RELEASE:32768,FREE:65536,PRIVATE:131072,MAPPED:262144,RESET:524288,TOP_DOWN:1048576,WRITE_WATCH:2097152,PHYSICAL:4194304,LARGE_PAGES:536870912},o={NOACCESS:1,READONLY:2,READWRITE:4,WRITECOPY:8,EXECUTE:16,EXECUTE_READ:32,EXECUTE_READWRITE:64,EXECUTE_WRITECOPY:128,GUARD:256,NOCACHE:512,WRITECOMBINE:1024};let s=null,c=null,l=null,u=null;function d(){if(u!==null)return u;try{return n.load(`kernel32.dll`).unload(),u=!0,!0}catch{return u=!1,!1}}function f(){return process.platform===`win32`}function p(){return s||(s=n.load(`kernel32.dll`),t.debug(`Loaded kernel32.dll via koffi`)),s}function m(){return c||(c=n.load(`ntdll.dll`),t.debug(`Loaded ntdll.dll via koffi`)),c}function h(){return l||(l=n.load(`psapi.dll`),t.debug(`Loaded psapi.dll via koffi`)),l}function g(e){return e==null?0n:typeof e==`bigint`?e:typeof e==`number`?BigInt(e):n.address(e)}function _(e,t,n){return g(p().func(`void * OpenProcess(uint32, int, uint32)`)(e,+!!t,n))}function v(e){return p().func(`int CloseHandle(void *)`)(e)!==0}function y(e,t,n){let r=p().func(`int ReadProcessMemory(void *, void *, _Out_ uint8_t *, size_t, _Out_ size_t *)`),i=Buffer.alloc(n),a=Buffer.alloc(8);if(r(e,t,i,BigInt(n),a)===0){let e=O();throw Error(`ReadProcessMemory failed. Error: 0x${e.toString(16)}`)}return i}function b(e,t,n){let r=p().func(`int WriteProcessMemory(void *, void *, uint8_t *, size_t, _Out_ size_t *)`),i=Buffer.alloc(8);if(r(e,t,n,BigInt(n.length),i)===0){let e=O();throw Error(`WriteProcessMemory failed. Error: 0x${e.toString(16)}`)}return Number(i.readBigUInt64LE())}function x(e,t){let n=p().func(`size_t VirtualQueryEx(void *, void *, _Out_ uint8_t *, size_t)`),r=Buffer.alloc(48),i=n(e,t,r,BigInt(48));return Number(i)===48?{success:!0,info:{BaseAddress:r.readBigUInt64LE(0),AllocationBase:r.readBigUInt64LE(8),AllocationProtect:r.readUInt32LE(16),RegionSize:r.readBigUInt64LE(24),State:r.readUInt32LE(32),Protect:r.readUInt32LE(36),Type:r.readUInt32LE(40)}}:{success:!1,info:{}}}function S(e,t,n,r){let i=p().func(`int VirtualProtectEx(void *, void *, size_t, uint32, _Out_ uint32 *)`),a=Buffer.alloc(4);return{success:i(e,t,BigInt(n),r,a)!==0,oldProtect:a.readUInt32LE(0)}}function C(e,t,n,r,i){return g(p().func(`void * VirtualAllocEx(void *, void *, size_t, uint32, uint32)`)(e,t,BigInt(n),r,i))}function w(e,t,n,r){return p().func(`int VirtualFreeEx(void *, void *, size_t, uint32)`)(e,t,BigInt(n),r)!==0}function T(e,t,n){let r=p().func(`void * CreateRemoteThread(void *, void *, size_t, void *, void *, uint32, _Out_ uint32 *)`),i=Buffer.alloc(4);return{handle:g(r(e,null,0n,t,n,0,i)),threadId:i.readUInt32LE(0)}}function E(e){return g(p().func(`void * GetModuleHandleA(char *)`)(e))}function D(e,t){return g(p().func(`void * GetProcAddress(void *, char *)`)(e,t))}function O(){return p().func(`uint32 GetLastError()`)()}function k(e,t){let n=m().func(`int32 NtQueryInformationProcess(void *, uint32, _Out_ void *, uint32, void *)`),r=Buffer.alloc(8);return{status:n(e,t,r,8,null),debugPort:Number(r.readBigUInt64LE())}}function A(e,t=1024){let n=h().func(`int EnumProcessModules(void *, _Out_ void *, uint32, _Out_ uint32 *)`),r=Buffer.alloc(t*8),i=Buffer.alloc(4),a=n(e,r,t*8,i),o=i.readUInt32LE(0),s=Math.floor(o/8),c=[];for(let e=0;e<s;e++)c.push(r.readBigUInt64LE(e*8));return{success:a!==0,modules:c,count:s}}function j(e,t,n=260){let r=h().func(`uint32 GetModuleBaseNameA(void *, void *, _Out_ char *, uint32)`),i=Buffer.alloc(n);r(e,t,i,n);let a=0;for(;a<n&&i[a]!==0;)a++;return i.toString(`utf8`,0,a)}function M(e,t,n=32768){let r=h().func(`uint32 GetModuleFileNameExA(void *, void *, _Out_ char *, uint32)`),i=Buffer.alloc(n),a=r(e,t,i,n);if(typeof a!=`number`||a<=0)return null;let o=0;for(;o<n&&i[o]!==0;)o++;return o>0?i.toString(`utf8`,0,o):null}function N(e,t){let n=h().func(`int GetModuleInformation(void *, void *, _Out_ uint8_t *, uint32)`),r=Buffer.alloc(24),i=n(e,t,r,24),a={lpBaseOfDll:r.readBigUInt64LE(0),SizeOfImage:r.readUInt32LE(8),EntryPoint:r.readBigUInt64LE(16)};return{success:i!==0,info:a}}function P(e,t=!1){let n=_(t?i.VM_READ|i.VM_WRITE|i.VM_OPERATION|i.QUERY_INFORMATION:i.VM_READ|i.QUERY_INFORMATION,!1,e);if(n===0n){let t=O();throw Error(`Failed to open process ${e}. Error: 0x${t.toString(16)}. Run as Administrator.`)}return n}export{b as _,M as a,P as b,D as c,y as d,C as f,r as g,x as h,j as i,a as l,S as m,A as n,E as o,w as p,O as r,N as s,v as t,o as u,d as v,f as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{r as t,t as n}from"./Win32API-DoP3MMHS.mjs";import r from"koffi";const i={TERMINATE:1,SUSPEND_RESUME:2,GET_CONTEXT:8,SET_CONTEXT:16,SET_INFORMATION:32,QUERY_INFORMATION:64,SET_THREAD_TOKEN:128,IMPERSONATE:256,DIRECT_IMPERSONATION:512,ALL_ACCESS:2032639},a={AMD64:1048576,CONTROL:1048577,INTEGER:1048578,SEGMENTS:1048580,FLOATING_POINT:1048584,DEBUG_REGISTERS:1048592,FULL:1048587,ALL:1048607},o={EXCEPTION_DEBUG_EVENT:1,CREATE_THREAD_DEBUG_EVENT:2,CREATE_PROCESS_DEBUG_EVENT:3,EXIT_THREAD_DEBUG_EVENT:4,EXIT_PROCESS_DEBUG_EVENT:5,LOAD_DLL_DEBUG_EVENT:6,UNLOAD_DLL_DEBUG_EVENT:7,OUTPUT_DEBUG_STRING_EVENT:8,RIP_EVENT:9},s={SINGLE_STEP:2147483652,BREAKPOINT:2147483651,ACCESS_VIOLATION:3221225477},c={CONTINUE:65538,EXCEPTION_NOT_HANDLED:2147549185,REPLY_LATER:1073807361},l={SNAPHEAPLIST:1,SNAPTHREAD:4,SNAPMODULE:8};function u(e){return{contextFlags:e.readUInt32LE(48),eflags:e.readUInt32LE(68),dr0:e.readBigUInt64LE(72),dr1:e.readBigUInt64LE(80),dr2:e.readBigUInt64LE(88),dr3:e.readBigUInt64LE(96),dr6:e.readBigUInt64LE(104),dr7:e.readBigUInt64LE(112),rax:e.readBigUInt64LE(120),rcx:e.readBigUInt64LE(128),rdx:e.readBigUInt64LE(136),rbx:e.readBigUInt64LE(144),rsp:e.readBigUInt64LE(152),rbp:e.readBigUInt64LE(160),rsi:e.readBigUInt64LE(168),rdi:e.readBigUInt64LE(176),r8:e.readBigUInt64LE(184),r9:e.readBigUInt64LE(192),r10:e.readBigUInt64LE(200),r11:e.readBigUInt64LE(208),r12:e.readBigUInt64LE(216),r13:e.readBigUInt64LE(224),r14:e.readBigUInt64LE(232),r15:e.readBigUInt64LE(240),rip:e.readBigUInt64LE(248)}}function d(e,t){t.contextFlags!==void 0&&e.writeUInt32LE(t.contextFlags,48),t.eflags!==void 0&&e.writeUInt32LE(t.eflags,68),t.dr0!==void 0&&e.writeBigUInt64LE(t.dr0,72),t.dr1!==void 0&&e.writeBigUInt64LE(t.dr1,80),t.dr2!==void 0&&e.writeBigUInt64LE(t.dr2,88),t.dr3!==void 0&&e.writeBigUInt64LE(t.dr3,96),t.dr6!==void 0&&e.writeBigUInt64LE(t.dr6,104),t.dr7!==void 0&&e.writeBigUInt64LE(t.dr7,112),t.rip!==void 0&&e.writeBigUInt64LE(t.rip,248)}let f=null;function p(){return f||(f=r.load(`kernel32.dll`),e.debug(`Loaded kernel32.dll for debug APIs`)),f}function m(e,t,n){return p().func(`void * OpenThread(uint32, int, uint32)`)(e,+!!t,n)}function h(e){let n=p().func(`uint32 SuspendThread(void *)`)(e);if(n===4294967295)throw Error(`SuspendThread failed. Error: 0x${t().toString(16)}`);return n}function g(e){let n=p().func(`uint32 ResumeThread(void *)`)(e);if(n===4294967295)throw Error(`ResumeThread failed. Error: 0x${t().toString(16)}`);return n}function _(e,n){let r=p().func(`int GetThreadContext(void *, _Inout_ uint8_t[1232])`),i=Buffer.alloc(1232);if(i.writeUInt32LE(n,48),r(e,i)===0)throw Error(`GetThreadContext failed. Error: 0x${t().toString(16)}`);return i}function v(e,n){if(p().func(`int SetThreadContext(void *, uint8_t[1232])`)(e,n)===0)throw Error(`SetThreadContext failed. Error: 0x${t().toString(16)}`)}function y(e){if(p().func(`int DebugActiveProcess(uint32)`)(e)===0)throw Error(`DebugActiveProcess failed for pid ${e}. Error: 0x${t().toString(16)}`)}function b(e){if(p().func(`int DebugActiveProcessStop(uint32)`)(e)===0)throw Error(`DebugActiveProcessStop failed. Error: 0x${t().toString(16)}`)}function x(e){p().func(`int DebugSetProcessKillOnExit(int)`)(+!!e)}function S(e){let t=p().func(`int WaitForDebugEvent(_Out_ uint8_t *, uint32)`),n=Buffer.alloc(176);if(t(n,e)===0)return null;let r={debugEventCode:n.readUInt32LE(0),processId:n.readUInt32LE(4),threadId:n.readUInt32LE(8)};return r.debugEventCode===o.EXCEPTION_DEBUG_EVENT&&(r.exceptionCode=n.readUInt32LE(16),r.exceptionAddress=n.readBigUInt64LE(32),r.firstChance=n.readUInt32LE(20)===0),r}function C(e,n,r){if(p().func(`int ContinueDebugEvent(uint32, uint32, uint32)`)(e,n,r)===0)throw Error(`ContinueDebugEvent failed. Error: 0x${t().toString(16)}`)}function w(e,t,n){p().func(`int FlushInstructionCache(void *, void *, size_t)`)(e,t,BigInt(n))}function T(e){let r=p().func(`void * CreateToolhelp32Snapshot(uint32, uint32)`),i=p().func(`int Thread32First(void *, _Inout_ uint8_t[28])`),a=p().func(`int Thread32Next(void *, _Inout_ uint8_t[28])`),o=r(l.SNAPTHREAD,0);if(o===0n||o===BigInt(`0xFFFFFFFFFFFFFFFF`))throw Error(`CreateToolhelp32Snapshot failed. Error: 0x${t().toString(16)}`);let s=[],c=Buffer.alloc(28);c.writeUInt32LE(28,0);try{if(i(o,c)!==0)do c.readUInt32LE(12)===e&&s.push(c.readUInt32LE(8)),c.writeUInt32LE(28,0);while(a(o,c)!==0);n(o)}catch(e){console.error(`[EnumerateProcessThreads] cleanup error:`,e)}return s}function E(e){let n=m(i.SUSPEND_RESUME|i.GET_CONTEXT|i.SET_CONTEXT|i.QUERY_INFORMATION,!1,e);if(n===0n)throw Error(`Failed to open thread ${e}. Error: 0x${t().toString(16)}`);return n}function D(e){let t=0n;for(let n of e){if(!n.enabled)continue;let{drIndex:e,access:r,size:i}=n;t|=1n<<BigInt(e*2);let a=0;switch(r){case`execute`:a=0;break;case`write`:a=1;break;case`readwrite`:case`read`:a=3;break}t|=BigInt(a)<<BigInt(16+e*4);let o=0;switch(i){case 1:o=0;break;case 2:o=1;break;case 4:o=3;break;case 8:o=2;break}t|=BigInt(o)<<BigInt(18+e*4)}return t}export{E as _,b as a,T as c,g as d,v as f,D as g,S as h,y as i,w as l,l as m,C as n,x as o,h as p,c as r,s,a as t,_ as u,u as v,d as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-88NL7fhV.mjs";import{t}from"./logger-CCikqqvj.mjs";import{l as n,o as r}from"./ToolRouter.policy-UKBlFlbh.mjs";import{randomUUID as i}from"node:crypto";var a=class{store=new Map;set(e,t){this.store.set(e,t)}get(e){return this.store.get(e)}getValueAtPath(e,t){let n=this.store.get(e);if(!n||typeof n!=`object`)return n;let r=o(n)||n;return t.split(`.`).reduce((e,t)=>{if(e&&typeof e==`object`){let n=t.match(/^(\d+)$/);return n&&Array.isArray(e)?e[Number(n[1])]:e[t]}},r)}resolve(e){let t=e.match(/^\$\{(.+)\}$/);if(!t||!t[1])return e;let n=t[1],r=n.indexOf(`.`);return r===-1?this.store.get(n):this.getValueAtPath(n.slice(0,r),n.slice(r+1))}};function o(e){if(!e||typeof e!=`object`)return;let t=e.content?.find(e=>e.type===`text`)?.text;if(typeof t==`string`)try{let e=JSON.parse(t);return e&&typeof e==`object`?e:void 0}catch{return}}function s(e){if(!e||typeof e!=`object`)return;if(e.isError)return`Tool returned MCP error response`;let t=o(e);if(t?.success===!1)return typeof t.error==`string`?t.error:`Tool reported success=false`}function c(e){if(Array.isArray(e))return e.reduce((e,t)=>{let n=c(t);return e.success+=n.success,e.failure+=n.failure,e},{success:0,failure:0});if(!e||typeof e!=`object`)return{success:0,failure:0};let t=e;if(Array.isArray(t.__order))return t.__order.reduce((e,n)=>{let r=c(t[n]);return e.success+=r.success,e.failure+=r.failure,e},{success:0,failure:0});let n=o(e);return n?.success===!0?{success:1,failure:0}:n?.success===!1||`error`in t?{success:0,failure:1}:{success:0,failure:0}}function l(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=i.startsWith("${")?i:`\${${i}}`;n[r]=t.resolve(e)}return n}function u(e,t){if(!e)return{};let n={};for(let[r,i]of Object.entries(e))n[r]=d(i,t);return n}function d(e,t){if(typeof e==`string`)return t.resolve(e);if(Array.isArray(e))return e.map(e=>d(e,t));if(e&&typeof e==`object`){let n={};for(let[r,i]of Object.entries(e))n[r]=d(i,t);return n}return e}function f(e,t){if(e.has(t))return e.get(t);let[n,...r]=t.split(`.`);if(!n||!e.has(n))return;let i=e.get(n);if(i&&typeof i==`object`){let e=o(i);e&&(i=e)}for(let e of r){if(i&&typeof i==`object`){let t=e.match(/^(\d+)$/);if(t&&Array.isArray(i)){i=i[Number(t[1])];continue}i=i[e];continue}return}return i}function p(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let n=e,r=t;return n.length===r.length&&n.every((e,t)=>p(e,r[t]))}let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>p(e[n],t[n])):!1}return!1}async function m(e,t){if(e.predicateFn)return await e.predicateFn(t);if(e.predicateId===`always_true`)return!0;if(e.predicateId===`always_false`)return!1;if(e.predicateId===`any_step_failed`)return[...t.stepResults.values()].some(e=>c(e).failure>0);let n=e.predicateId.match(/success_rate_gte_(\d+)/i);if(n?.[1]){let e=Number(n[1]),r=[...t.stepResults.values()].reduce((e,t)=>{let n=c(t);return e.success+=n.success,e.failure+=n.failure,e},{success:0,failure:0}),i=r.success+r.failure;return i>0&&r.success/i>=e/100}let r=e.predicateId.match(/^variable_equals_(.+?)_(.+)$/);if(r?.[1]&&r[2])return p(f(t.stepResults,r[1]),r[2]);let i=e.predicateId.match(/^variable_contains_(.+?)_(.+)$/);if(i?.[1]&&i[2]){let e=f(t.stepResults,i[1]);return typeof e!=`string`&&!Array.isArray(e)?!1:String(e).includes(i[2])}let a=e.predicateId.match(/^variable_matches_(.+?)_(.+)$/);if(a?.[1]&&a[2]){let e=f(t.stepResults,a[1]);if(typeof e!=`string`)return!1;try{return new RegExp(a[2]).test(e)}catch{return!1}}throw Error(`Unknown workflow predicateId "${e.predicateId}"`)}function h(e){switch(e.kind){case`tool`:return[e];case`sequence`:case`parallel`:return e.steps.flatMap(e=>h(e));case`branch`:return[...h(e.whenTrue),...e.whenFalse?h(e.whenFalse):[]];case`fallback`:return[...h(e.primary),...h(e.fallback)];default:return[]}}function g(e){try{let t=e.getDomainInstance(`evidenceGraph`);return t?{hasGraph:!0,nodeCount:t.nodeCount,edgeCount:t.edgeCount}:{hasGraph:!1,nodeCount:0,edgeCount:0}}catch{return{hasGraph:!1,nodeCount:0,edgeCount:0}}}function _(e,t){let n=r(),i=[];for(let r of h(e)){let e=n[r.toolName]??[];for(let n of e)n.check(t)||i.push({nodeId:r.id,toolName:r.toolName,condition:n.condition,fix:n.fix})}return i}var v=class{runs=new Map;lastSuccess=new Map;recordSuccess(e){let n={workflowId:e.workflowId,runId:e.runId,startedAt:e.startedAt,finishedAt:e.finishedAt,durationMs:e.durationMs,status:`success`,stepResultKeys:Object.keys(e.stepResults)};this.runs.set(e.runId,n),this.lastSuccess.set(e.workflowId,e),t.debug(`workflow run recorded: ${e.runId} (${e.workflowId})`)}recordError(e,n,r,i){let a={workflowId:e,runId:n,startedAt:r,finishedAt:new Date().toISOString(),durationMs:Date.now()-new Date(r).getTime(),status:`error`,stepResultKeys:[]};this.runs.set(n,a),t.debug(`workflow run error: ${n} (${e}): ${i}`)}getRun(e){return this.runs.get(e)}getLastSuccess(e){return this.lastSuccess.get(e)}listRuns(e){let t=[...this.runs.values()];return e?t.filter(t=>t.workflowId===e):t}clear(){this.runs.clear(),this.lastSuccess.clear()}},y=class extends Error{warnings;constructor(e){super(`Workflow preflight failed with ${e.length} unsatisfied prerequisite(s)`),this.warnings=e,this.name=`PreflightError`}},b=e({executeExtensionWorkflow:()=>O});const x=new v;function S(e,t,n){let r=t.split(`.`).filter(Boolean),i=e;for(let e of r){if(!i||typeof i!=`object`)return n;i=i[e]}return i??n}function C(e){return new Promise(t=>setTimeout(t,e))}async function w(e,t,n){return!Number.isFinite(t)||t<=0?e:new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})})}async function T(e,t,n,r){let i=t.inputFrom?l(t.inputFrom,r.dataBus):{},a={...t.input?u(t.input,r.dataBus):{},...i,...n?.[t.id]},o=async()=>{let n=await w(e.executeToolWithTracking(t.toolName,a),t.timeoutMs??0,`Workflow tool node "${t.id}"`),i=s(n);if(i)throw Error(i);return r.dataBus.set(t.id,n),n},c=t.retry;if(!c)return o();let d=0,f=c.backoffMs;for(;d<c.maxAttempts;)try{return await o()}catch(e){if(d+=1,d>=c.maxAttempts)throw e;await C(f),f=Math.max(0,Math.floor(f*(c.multiplier??1)))}throw Error(`Workflow tool node "${t.id}" exhausted retries`)}async function E(e,t,n,r){let i=Math.max(1,t.maxConcurrency??4),a={__order:[]},o=0,s=!1,c=async()=>{for(;;){if(s)return;let i=o;if(o+=1,i>=t.steps.length)return;let c=t.steps[i];if(!c)return;try{let t=await D(e,c,n,r);a[c.id]=t,a.__order.push(c.id)}catch(e){if(t.failFast)throw s=!0,e;a[c.id]={success:!1,error:e instanceof Error?e.message:String(e)},a.__order.push(c.id)}}};return await Promise.all(Array.from({length:Math.min(i,t.steps.length)},()=>c())),a}async function D(e,t,n,r){n.emitSpan(`workflow.node.start`,{nodeId:t.id,kind:t.kind});let i;switch(t.kind){case`tool`:i=await T(e,t,r.nodeInputOverrides,n);break;case`sequence`:{let a=t,o=[];for(let t of a.steps)o.push(await D(e,t,n,r));i=o;break}case`parallel`:i=await E(e,t,n,r);break;case`branch`:{let a=t,o=await m(a,n)?a.whenTrue:a.whenFalse;i=o?await D(e,o,n,r):void 0;break}case`fallback`:{let a=t;try{i=await D(e,a.primary,n,r)}catch(t){n.emitSpan(`workflow.node.fallback`,{nodeId:a.id,primaryNodeId:a.primary.id,fallbackNodeId:a.fallback.id,error:t instanceof Error?t.message:String(t)}),i=await D(e,a.fallback,n,r)}break}default:throw Error(`Unsupported workflow node kind: ${t.kind}`)}return n.stepResults.set(t.id,i),n.emitSpan(`workflow.node.finish`,{nodeId:t.id,kind:t.kind}),i}async function O(e,t,r={}){let o=i(),s=r.profile??String(e.baseTier??`workflow`),c=new Date().toISOString(),l=Date.now(),u=[],d=[],f=new Map,p=new a,m=r.config?{...e.config,...r.config}:e.config,h={workflowRunId:o,profile:s,stepResults:f,dataBus:p,invokeTool(t,n){return e.executeToolWithTracking(t,n)},emitSpan(e,t){d.push({name:e,attrs:t,at:new Date().toISOString()})},emitMetric(e,t,n,r){u.push({name:e,value:t,type:n,attrs:r,at:new Date().toISOString()})},getConfig(e,t){return S(m,e,t)}};try{await t.onStart?.(h);let i=t.build(h),a=r.preflightMode??`warn`,p=[];if(a===`skip`)h.emitSpan(`workflow.preflight`,{mode:a,skipped:!0,evidenceState:g(e),warningCount:0});else try{let t=await n(e),r=g(e);if(p=_(i,t),h.emitSpan(`workflow.preflight`,{mode:a,routingState:t,evidenceState:r,warningCount:p.length,warnings:p}),a===`strict`&&p.length>0)throw new y(p)}catch(t){if(t instanceof y)throw t;h.emitSpan(`workflow.preflight`,{mode:a,warningCount:0,skipped:!0,error:t instanceof Error?t.message:String(t),evidenceState:g(e)})}let m=await w(D(e,i,h,r),r.timeoutMs??t.timeoutMs??0,`Workflow "${t.id}"`);await t.onFinish?.(h,m);try{let t=typeof e.getDomainInstance==`function`?e.getDomainInstance(`evidenceGraph`):void 0;t&&t.nodeCount>0&&(f.set(`__evidenceSnapshot`,t.exportJson()),h.emitSpan(`workflow.evidence.auto-export`,{nodeCount:t.nodeCount,edgeCount:t.edgeCount}))}catch(e){h.emitSpan(`workflow.evidence.auto-export`,{skipped:!0,error:e instanceof Error?e.message:String(e)})}let v={workflowId:t.id,displayName:t.displayName,runId:o,profile:s,startedAt:c,finishedAt:new Date().toISOString(),durationMs:Date.now()-l,result:m,stepResults:Object.fromEntries(f.entries()),metrics:u,spans:d};return x.recordSuccess(v),v}catch(e){let n=e instanceof Error?e:Error(String(e));throw x.recordError(t.id,o,c,n),await t.onError?.(h,n),n}}export{O as n,b as t};
|