@jshookmcp/jshook 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +36 -5
  2. package/README.zh.md +36 -5
  3. package/dist/{AntiCheatDetector-S8VRj-dD.mjs → AntiCheatDetector-CqGDXmfc.mjs} +160 -54
  4. package/dist/{CodeInjector-4Z3ngPoX.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
  5. package/dist/ConsoleMonitor-DykL3IAw.mjs +2269 -0
  6. package/dist/{DarwinAPI-B8hg_yhz.mjs → DarwinAPI-ETyy0xyo.mjs} +1 -1
  7. package/dist/DetailedDataManager-HT49OrvF.mjs +217 -0
  8. package/dist/EventBus-DFKvADm3.mjs +141 -0
  9. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +153 -0
  10. package/dist/{ExtensionManager-D5-bO9D8.mjs → ExtensionManager-BDMsY2Dz.mjs} +27 -13
  11. package/dist/{FingerprintManager-BVxFJL2-.mjs → FingerprintManager-BN4UQWnX.mjs} +1 -1
  12. package/dist/{HardwareBreakpoint-DK1yjWkV.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
  13. package/dist/{HeapAnalyzer-CEbo10xU.mjs → HeapAnalyzer-DruMgsgj.mjs} +21 -21
  14. package/dist/HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs +566 -0
  15. package/dist/InstrumentationSession-DLH0vd-z.mjs +244 -0
  16. package/dist/{MemoryController-DdtnBdD4.mjs → MemoryController-CMtviNW_.mjs} +3 -3
  17. package/dist/{MemoryScanSession-RMixN3bX.mjs → MemoryScanSession-ITgb_NMi.mjs} +81 -78
  18. package/dist/{MemoryScanner-QjK4ld0B.mjs → MemoryScanner-CiL7Z3ey.mjs} +50 -21
  19. package/dist/{NativeMemoryManager.impl-CB6gJ0NM.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +20 -56
  20. package/dist/{NativeMemoryManager.utils-BML4q1ry.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
  21. package/dist/{PEAnalyzer-CK0xe0Fs.mjs → PEAnalyzer-DMQ44gen.mjs} +16 -16
  22. package/dist/PageController-BPJNqqBN.mjs +431 -0
  23. package/dist/{PointerChainEngine-Cd73qu5b.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
  24. package/dist/PrerequisiteError-TuyZIs6n.mjs +20 -0
  25. package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
  26. package/dist/ResponseBuilder-CJXWmWNw.mjs +143 -0
  27. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +269 -0
  28. package/dist/ScriptManager-ZuWD-0Jg.mjs +3003 -0
  29. package/dist/{Speedhack-CeF0XmEz.mjs → Speedhack-D-z0umeT.mjs} +2 -2
  30. package/dist/{StructureAnalyzer-D4GkMduU.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
  31. package/dist/ToolCatalog-5OJdMiF0.mjs +582 -0
  32. package/dist/ToolError-jh9whhMd.mjs +15 -0
  33. package/dist/ToolProbe-DbCFGyrg.mjs +45 -0
  34. package/dist/ToolRegistry-B9krbTtI.mjs +180 -0
  35. package/dist/ToolRouter.policy-BGDAGyeH.mjs +344 -0
  36. package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
  37. package/dist/{Win32API-Bc0QnQsN.mjs → Win32API-C2kjj0ze.mjs} +19 -13
  38. package/dist/{Win32Debug-DUHt9XUn.mjs → Win32Debug-CKrGOTpo.mjs} +3 -3
  39. package/dist/WorkflowEngine-DJ6M4opp.mjs +569 -0
  40. package/dist/analysis-BHeJW2Nb.mjs +1234 -0
  41. package/dist/antidebug-BRKeyt27.mjs +1081 -0
  42. package/dist/artifactRetention-CPXkUJXp.mjs +598 -0
  43. package/dist/artifacts-DkfosXH3.mjs +59 -0
  44. package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
  45. package/dist/betterSqlite3-DLSBZodi.mjs +74 -0
  46. package/dist/binary-instrument--V3MAhJ4.mjs +971 -0
  47. package/dist/bind-helpers-ClV34xdn.mjs +42 -0
  48. package/dist/boringssl-inspector-Bo_LOLaS.mjs +180 -0
  49. package/dist/browser-Dx3_S2cG.mjs +4369 -0
  50. package/dist/capabilities-CcHlvWgK.mjs +33 -0
  51. package/dist/concurrency-Drev_Vz9.mjs +41 -0
  52. package/dist/{constants-CCvsN80K.mjs → constants-CDZLOoVv.mjs} +105 -48
  53. package/dist/coordination-DgItD9DL.mjs +259 -0
  54. package/dist/debugger-RS3RSAqs.mjs +1288 -0
  55. package/dist/definitions-BEoYofW5.mjs +47 -0
  56. package/dist/definitions-BRaefg3u.mjs +365 -0
  57. package/dist/definitions-BbkvZkiv.mjs +96 -0
  58. package/dist/definitions-BtWSHJ3o.mjs +17 -0
  59. package/dist/definitions-C1gCHO0i.mjs +43 -0
  60. package/dist/definitions-CDOg_b-l.mjs +138 -0
  61. package/dist/definitions-CVPD9hzZ.mjs +54 -0
  62. package/dist/definitions-Cea8Lgl7.mjs +94 -0
  63. package/dist/definitions-DAgIyjxM.mjs +10 -0
  64. package/dist/definitions-DJA27nsL.mjs +66 -0
  65. package/dist/definitions-DKPFU3LW.mjs +25 -0
  66. package/dist/definitions-DPRpZQ96.mjs +47 -0
  67. package/dist/definitions-DUE5gmdn.mjs +18 -0
  68. package/dist/definitions-DYVjOtxa.mjs +26 -0
  69. package/dist/definitions-DcYLVLCo.mjs +37 -0
  70. package/dist/definitions-Pp5LI2H4.mjs +27 -0
  71. package/dist/definitions-j9KdHVNR.mjs +14 -0
  72. package/dist/definitions-uzkjBwa7.mjs +258 -0
  73. package/dist/definitions-va-AnLuQ.mjs +28 -0
  74. package/dist/encoding-DJeqHmpd.mjs +1079 -0
  75. package/dist/evidence-graph-bridge-DcYizFk2.mjs +136 -0
  76. package/dist/{factory-CibqTNC8.mjs → factory-C90tBff6.mjs} +41 -56
  77. package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
  78. package/dist/graphql-CoHrhweh.mjs +1197 -0
  79. package/dist/handlers-4jmR0nMs.mjs +898 -0
  80. package/dist/handlers-BAHPxcch.mjs +789 -0
  81. package/dist/handlers-BOs9b907.mjs +2600 -0
  82. package/dist/handlers-BWXEy6ef.mjs +917 -0
  83. package/dist/handlers-Bndn6QvE.mjs +111 -0
  84. package/dist/handlers-BqC4bD4s.mjs +681 -0
  85. package/dist/handlers-BtYq60bM2.mjs +276 -0
  86. package/dist/handlers-BzgcB4iv.mjs +799 -0
  87. package/dist/handlers-CRyRWj2b.mjs +859 -0
  88. package/dist/handlers-CVv2H1uq.mjs +592 -0
  89. package/dist/handlers-Dl5a7JS4.mjs +572 -0
  90. package/dist/handlers-Dx2d7jt7.mjs +2537 -0
  91. package/dist/handlers-Dz9PYsCa.mjs +2805 -0
  92. package/dist/handlers-HujRKC3b.mjs +661 -0
  93. package/dist/handlers.impl-XWXkQfyi.mjs +807 -0
  94. package/dist/hooks-B1B8NRHL.mjs +898 -0
  95. package/dist/index.mjs +491 -259
  96. package/dist/{logger-BmWzC2lM.mjs → logger-Dh_xb7_2.mjs} +14 -6
  97. package/dist/maintenance-PRMkLVRW.mjs +835 -0
  98. package/dist/manifest-67Bok-Si.mjs +58 -0
  99. package/dist/manifest-6lNTMZAB2.mjs +87 -0
  100. package/dist/manifest-B2duEHiH.mjs +90 -0
  101. package/dist/manifest-B6EY9Vm8.mjs +57 -0
  102. package/dist/manifest-B6nKSbyY.mjs +95 -0
  103. package/dist/manifest-BL8AQNPF.mjs +106 -0
  104. package/dist/manifest-BSZvJJmV.mjs +47 -0
  105. package/dist/manifest-BU7qzUyX.mjs +418 -0
  106. package/dist/manifest-Bl62e8WK.mjs +49 -0
  107. package/dist/manifest-Bo5cXjdt.mjs +82 -0
  108. package/dist/manifest-BpS4gtUK.mjs +1347 -0
  109. package/dist/manifest-Bv65_e2W.mjs +101 -0
  110. package/dist/manifest-BytNIF4Z.mjs +117 -0
  111. package/dist/manifest-C-xtsjS3.mjs +81 -0
  112. package/dist/manifest-CDYl7OhA.mjs +66 -0
  113. package/dist/manifest-CRZ3xmkD.mjs +61 -0
  114. package/dist/manifest-CoW6u4Tp.mjs +132 -0
  115. package/dist/manifest-Cq5zN_8A.mjs +50 -0
  116. package/dist/manifest-D7YZM_2e.mjs +194 -0
  117. package/dist/manifest-DE_VrAeQ.mjs +314 -0
  118. package/dist/manifest-DGsXSCpT.mjs +39 -0
  119. package/dist/manifest-DJ2vfEuW.mjs +156 -0
  120. package/dist/manifest-DPXDYhEu.mjs +80 -0
  121. package/dist/manifest-Dd4fQb0a.mjs +322 -0
  122. package/dist/manifest-Deq6opGg.mjs +223 -0
  123. package/dist/manifest-DfJTafJK.mjs +37 -0
  124. package/dist/manifest-DgOdgN_j.mjs +50 -0
  125. package/dist/manifest-DlbMW4v4.mjs +47 -0
  126. package/dist/manifest-DmVfbH0w.mjs +374 -0
  127. package/dist/manifest-Dog6Ddjr.mjs +109 -0
  128. package/dist/manifest-DvgU5FWb.mjs +58 -0
  129. package/dist/manifest-HsfDBs7j.mjs +50 -0
  130. package/dist/manifest-I8oQHvCG.mjs +186 -0
  131. package/dist/manifest-NvH_a-av.mjs +786 -0
  132. package/dist/manifest-cEJU1v0Z.mjs +129 -0
  133. package/dist/manifest-wOl5XLB12.mjs +112 -0
  134. package/dist/modules-tZozf0LQ.mjs +10635 -0
  135. package/dist/mojo-ipc-DXNEXEqb.mjs +640 -0
  136. package/dist/network-CPVvwvFg.mjs +3852 -0
  137. package/dist/{artifacts-BbdOMET5.mjs → outputPaths-um7lCRY3.mjs} +219 -216
  138. package/dist/parse-args-B4cY5Vx5.mjs +39 -0
  139. package/dist/platform-CYeFoTWp.mjs +2161 -0
  140. package/dist/process-BTbgcVc6.mjs +1306 -0
  141. package/dist/proxy-r8YN6nP1.mjs +192 -0
  142. package/dist/registry-Bl8ZQW61.mjs +34 -0
  143. package/dist/response-CWhh2aLo.mjs +34 -0
  144. package/dist/server/plugin-api.mjs +2 -2
  145. package/dist/shared-state-board-BoZnSoj-.mjs +586 -0
  146. package/dist/sourcemap-BIDHUVXy.mjs +934 -0
  147. package/dist/ssrf-policy-Dsqd-DTX.mjs +166 -0
  148. package/dist/streaming-Dal6utPp.mjs +725 -0
  149. package/dist/tool-builder-BHJp32mV.mjs +186 -0
  150. package/dist/transform-DRVgGG90.mjs +1011 -0
  151. package/dist/types-Bx92KJfT.mjs +4 -0
  152. package/dist/wasm-BYx5UOeG.mjs +1044 -0
  153. package/dist/webcrack-Be0_FccV.mjs +747 -0
  154. package/dist/workflow-BpuKEtvn.mjs +725 -0
  155. package/package.json +82 -49
  156. package/dist/ExtensionManager-CPTJhHFg.mjs +0 -2
  157. package/dist/ToolCatalog-Bq4V2sbJ.mjs +0 -67201
  158. package/dist/{CacheAdapters-CzFNpD9a.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
  159. package/dist/{StealthVerifier-BzBCFiwx.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
  160. package/dist/{VersionDetector-CNXcvD46.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
  161. package/dist/{formatAddress-ChCSIRWT.mjs → formatAddress-nnMvEohD.mjs} +0 -0
  162. package/dist/{types-BBjOqye-.mjs → types-DDBWs9UP.mjs} +1 -1
@@ -0,0 +1,258 @@
1
+ import { t as tool } from "./tool-builder-BHJp32mV.mjs";
2
+ import { t as networkAuthorizationSchema } from "./authorization-schema-DRqyJMSk.mjs";
3
+ //#region src/server/domains/network/definitions/analysis-tools.ts
4
+ const analysisTools = [
5
+ tool("network_extract_auth", (t) => t.desc("Extract authentication data from captured network requests.").number("minConfidence", "Minimum confidence threshold 0-1", {
6
+ default: .4,
7
+ minimum: 0,
8
+ maximum: 1
9
+ })),
10
+ tool("network_export_har", (t) => t.desc("Export captured network traffic as HAR.").string("outputPath", "File path to write the HAR file. If omitted, returns HAR as JSON.").boolean("includeBodies", "Include response bodies in the HAR (may be slow for large captures). Default: false", { default: false }).openWorld()),
11
+ tool("network_replay_request", (t) => t.desc("Replay a captured network request with optional changes.").string("requestId", "Request ID from network_get_requests to replay").object("headerPatch", { additionalProperties: { type: "string" } }, "Headers to add or override (key-value pairs)").object("sessionProfile", {
12
+ cookies: {
13
+ type: "array",
14
+ items: {
15
+ type: "object",
16
+ properties: {
17
+ name: { type: "string" },
18
+ value: { type: "string" },
19
+ domain: { type: "string" },
20
+ path: { type: "string" },
21
+ expires: { type: "number" },
22
+ httpOnly: { type: "boolean" },
23
+ secure: { type: "boolean" },
24
+ sameSite: {
25
+ type: "string",
26
+ enum: [
27
+ "Strict",
28
+ "Lax",
29
+ "None"
30
+ ]
31
+ }
32
+ },
33
+ required: ["name", "value"]
34
+ }
35
+ },
36
+ userAgent: { type: "string" },
37
+ acceptLanguage: { type: "string" },
38
+ referer: { type: "string" },
39
+ clientHints: {
40
+ type: "object",
41
+ properties: {
42
+ "sec-ch-ua": { type: "string" },
43
+ "sec-ch-ua-mobile": { type: "string" },
44
+ "sec-ch-ua-platform": { type: "string" },
45
+ "sec-ch-ua-full-version-list": { type: "string" }
46
+ }
47
+ },
48
+ platform: { type: "string" },
49
+ origin: { type: "string" },
50
+ collectedAt: { type: "number" },
51
+ ttlSec: { type: "number" }
52
+ }, "Inject browser cookies, User-Agent and Accept-Language from a captured session into the replay.").string("bodyPatch", "Replace the entire request body with this string").string("methodOverride", "Override the HTTP method").string("urlOverride", "Override the request URL").object("authorization", networkAuthorizationSchema, "Request-scoped authorization policy for private-network or insecure-HTTP replay. Use exact hosts/CIDRs instead of process-wide bypasses.").string("authorizationCapability", "Base64url-encoded JSON capability for request-scoped authorization. Payload fields mirror authorization and must include requestId.").number("timeoutMs", "Request timeout in milliseconds", {
53
+ default: 3e4,
54
+ minimum: 1e3,
55
+ maximum: 12e4
56
+ }).boolean("dryRun", "Preview the request without sending it", { default: true }).requiredOpenWorld("requestId")),
57
+ tool("network_intercept", (t) => t.desc("Manage network interception rules.").enum("action", [
58
+ "add",
59
+ "list",
60
+ "disable"
61
+ ], "Intercept operation").string("urlPattern", "URL pattern to match").enum("urlPatternType", ["glob", "regex"], "How to interpret urlPattern", { default: "glob" }).enum("stage", ["Request", "Response"], "Intercept stage. Response (default) intercepts after server responds.", { default: "Response" }).number("responseCode", "HTTP status code to return", {
62
+ default: 200,
63
+ minimum: 100,
64
+ maximum: 599
65
+ }).object("responseHeaders", { additionalProperties: { type: "string" } }, "Custom response headers as key-value pairs.").string("responseBody", "Custom response body string.").array("rules", {
66
+ type: "object",
67
+ properties: {
68
+ urlPattern: { type: "string" },
69
+ urlPatternType: {
70
+ type: "string",
71
+ enum: ["glob", "regex"]
72
+ },
73
+ stage: {
74
+ type: "string",
75
+ enum: ["Request", "Response"]
76
+ },
77
+ responseCode: { type: "number" },
78
+ responseHeaders: {
79
+ type: "object",
80
+ additionalProperties: { type: "string" }
81
+ },
82
+ responseBody: { type: "string" }
83
+ },
84
+ required: ["urlPattern"]
85
+ }, "Rule objects to add").string("ruleId", "Rule ID to remove").boolean("all", "Remove all rules", { default: false }).required("action")),
86
+ tool("network_tls_fingerprint", (t) => t.desc("Compute TLS/HTTP fingerprint hashes for bot detection.").enum("mode", [
87
+ "analyze_request",
88
+ "compute_tls",
89
+ "compute_http"
90
+ ], "Fingerprint mode").string("requestId", "Request ID to analyze").array("tlsVersions", { type: "string" }, "TLS version codes in order").array("ciphers", { type: "string" }, "Cipher suite codes in order").array("extensions", { type: "string" }, "Extension type codes in order").array("signatureAlgorithms", { type: "string" }, "Signature algorithm codes in order").enum("protocol", [
91
+ "tls",
92
+ "quic",
93
+ "dtls"
94
+ ], "Transport protocol type", { default: "tls" }).boolean("sni", "Whether SNI (Server Name Indication) extension is present", { default: true }).string("alpn", "ALPN value").array("httpHeaders", { type: "string" }, "HTTP header names in order").string("userAgent", "User-Agent value").string("httpMethod", "HTTP method", { default: "GET" }).string("httpVersion", "HTTP version", { default: "1.1" }).string("cookieHeader", "Cookie header value").string("acceptLanguage", "Accept-Language header value").boolean("includeAnalysis", "Include detailed fingerprint breakdown", { default: true }).required("mode")),
95
+ tool("network_bot_detect_analyze", (t) => t.desc("Analyze captured requests for bot-detection signals.").number("limit", "Maximum requests to analyze", {
96
+ default: 50,
97
+ minimum: 1,
98
+ maximum: 500
99
+ }).boolean("includeDetails", "Include per-request analysis details", { default: false }).query())
100
+ ];
101
+ //#endregion
102
+ //#region src/server/domains/network/definitions/capture-tools.ts
103
+ const captureTools = [
104
+ tool("network_enable", (t) => t.desc("Enable network request monitoring.").boolean("enableExceptions", "Also capture uncaught exceptions", { default: true })),
105
+ tool("network_disable", (t) => t.desc("Disable network request monitoring").destructive()),
106
+ tool("network_get_status", (t) => t.desc("Get network monitoring status.").query()),
107
+ tool("network_monitor", (t) => t.desc("Manage network request monitoring.").enum("action", [
108
+ "enable",
109
+ "disable",
110
+ "status"
111
+ ], "Action to perform").boolean("enableExceptions", "Only for enable action: Also capture uncaught exceptions", { default: true }).required("action")),
112
+ tool("network_get_requests", (t) => t.desc("Get captured network requests.").string("url", "Filter by URL substring").string("urlRegex", "Filter by URL regex pattern").string("method", "Filter by HTTP method (GET, POST, PUT, DELETE)").number("sinceTimestamp", "Only return requests after this epoch timestamp (milliseconds). Useful for incremental polling.").string("sinceRequestId", "Only return requests after this requestId (exclusive). Useful for incremental retrieval.").number("tail", "Return the last N requests after filtering").number("limit", "Maximum number of results per page", {
113
+ default: 100,
114
+ minimum: 1,
115
+ maximum: 1e3
116
+ }).number("offset", "Skip results for pagination", {
117
+ default: 0,
118
+ minimum: 0
119
+ }).boolean("autoEnable", "Auto-enable network monitoring when currently disabled", { default: true }).boolean("enableExceptions", "When autoEnable=true, also enable uncaught exception monitoring", { default: true })),
120
+ tool("network_get_response_body", (t) => t.desc("Get the response body for a captured request.").string("requestId", "Request ID (from network_get_requests)").number("maxSize", "Maximum response size in bytes", {
121
+ default: 1e5,
122
+ minimum: 1024,
123
+ maximum: 2e7
124
+ }).boolean("returnSummary", "Return only size and preview instead of full body", { default: false }).number("retries", "Retry count when response body is not yet available", {
125
+ default: 3,
126
+ minimum: 0,
127
+ maximum: 10
128
+ }).number("retryIntervalMs", "Retry interval in milliseconds", {
129
+ default: 500,
130
+ minimum: 100,
131
+ maximum: 1e4
132
+ }).boolean("autoEnable", "Auto-enable network monitoring when currently disabled", { default: false }).boolean("enableExceptions", "When autoEnable=true, also enable uncaught exception monitoring", { default: true }).required("requestId")),
133
+ tool("network_get_stats", (t) => t.desc("Get network statistics.").query()),
134
+ tool("performance_get_metrics", (t) => t.desc("Get page performance metrics.").boolean("includeTimeline", "Include detailed timeline events", { default: false }).query()),
135
+ tool("performance_coverage", (t) => t.desc("Start or stop code coverage recording.").enum("action", ["start", "stop"], "Coverage action").required("action")),
136
+ tool("performance_take_heap_snapshot", (t) => t.desc("Take a V8 heap memory snapshot")),
137
+ tool("performance_trace", (t) => t.desc("Start or stop a Chrome performance trace.").enum("action", ["start", "stop"], "Trace action").array("categories", { type: "string" }, "Trace categories to capture").boolean("screenshots", "Capture screenshots during tracing", { default: false }).string("artifactPath", "Custom output path").required("action")),
138
+ tool("profiler_cpu", (t) => t.desc("Start or stop CPU profiling.").enum("action", ["start", "stop"], "Profiler action").string("artifactPath", "Custom output path").required("action")),
139
+ tool("profiler_heap_sampling", (t) => t.desc("Start or stop heap allocation sampling.").enum("action", ["start", "stop"], "Sampling action").number("samplingInterval", "Sampling interval in bytes", {
140
+ default: 32768,
141
+ minimum: 256,
142
+ maximum: 1048576
143
+ }).string("artifactPath", "Custom output path").number("topN", "Number of top allocators to return", {
144
+ default: 20,
145
+ minimum: 1,
146
+ maximum: 100
147
+ }).required("action"))
148
+ ];
149
+ //#endregion
150
+ //#region src/server/domains/network/definitions/console-tools.ts
151
+ const consoleTools = [
152
+ tool("console_get_exceptions", (t) => t.desc("Get captured uncaught exceptions from the page").string("url", "Filter by URL substring").number("limit", "Maximum number of exceptions to return", {
153
+ default: 50,
154
+ minimum: 1,
155
+ maximum: 1e3
156
+ }).readOnly()),
157
+ tool("console_inject", (t) => t.desc("Inject an in-page script, XHR, fetch, or function monitor.").enum("type", [
158
+ "script",
159
+ "xhr",
160
+ "fetch",
161
+ "function"
162
+ ], "Injection type").string("functionName", "Global function path to trace").boolean("persistent", "Keep the injection across page navigations", { default: false }).required("type").openWorld()),
163
+ tool("console_inject_fetch_interceptor", (t) => t.desc("Inject a fetch interceptor.").boolean("persistent", "Keep the injection across page navigations", { default: false }).openWorld()),
164
+ tool("console_inject_xhr_interceptor", (t) => t.desc("Inject an XMLHttpRequest interceptor.").boolean("persistent", "Keep the injection across page navigations", { default: false }).openWorld()),
165
+ tool("console_buffers", (t) => t.desc("Manage injected interceptor state.").enum("action", ["clear", "reset"], "Buffer action: clear buffers or reset interceptors").required("action"))
166
+ ];
167
+ //#endregion
168
+ //#region src/server/domains/network/definitions/probe-tools.ts
169
+ const probeTools = [tool("network_traceroute", (t) => t.desc("Run an ICMP traceroute.").string("target", "Target hostname or IP address to trace route to").number("maxHops", "Maximum number of hops", {
170
+ default: 30,
171
+ minimum: 1,
172
+ maximum: 64
173
+ }).number("timeout", "Per-hop timeout in milliseconds", {
174
+ default: 5e3,
175
+ minimum: 100,
176
+ maximum: 3e4
177
+ }).number("packetSize", "ICMP echo request payload size in bytes", {
178
+ default: 32,
179
+ minimum: 8,
180
+ maximum: 65500
181
+ }).required("target").query()), tool("network_icmp_probe", (t) => t.desc("Run an ICMP echo probe.").string("target", "Target hostname or IP address to probe").number("ttl", "Time-to-live value", {
182
+ default: 128,
183
+ minimum: 1,
184
+ maximum: 255
185
+ }).number("packetSize", "ICMP echo request payload size in bytes", {
186
+ default: 32,
187
+ minimum: 8,
188
+ maximum: 65500
189
+ }).number("timeout", "Timeout in milliseconds", {
190
+ default: 5e3,
191
+ minimum: 100,
192
+ maximum: 3e4
193
+ }).required("target").query())];
194
+ //#endregion
195
+ //#region src/server/domains/network/definitions/transport-tools.ts
196
+ const transportTools = [
197
+ tool("http_request_build", (t) => t.desc("Build a raw HTTP/1.x request payload.").string("method", "HTTP method token").string("target", "Request target, such as /path, *, or an absolute-form URL").string("host", "Optional Host header value to inject when addHostHeader is enabled").object("headers", { additionalProperties: { type: "string" } }, "Optional HTTP headers to include in the request").string("body", "Optional UTF-8 request body").enum("httpVersion", ["1.0", "1.1"], "HTTP protocol version to emit", { default: "1.1" }).boolean("addHostHeader", "Auto-add the Host header when host is provided", { default: true }).boolean("addContentLength", "Auto-add Content-Length when a body is present and Transfer-Encoding is absent", { default: true }).boolean("addConnectionClose", "Auto-add Connection: close when absent", { default: true }).requiredOpenWorld("method", "target")),
198
+ tool("http_plain_request", (t) => t.desc("Send a raw HTTP request over plain TCP.").string("host", "Target hostname or IP literal").number("port", "TCP port to connect to. Default: 80", {
199
+ default: 80,
200
+ minimum: 1,
201
+ maximum: 65535
202
+ }).string("requestText", "Raw HTTP request text to send as UTF-8 bytes").object("authorization", networkAuthorizationSchema, "Request-scoped authorization policy for private-network or insecure-HTTP targets. Use exact hosts/CIDRs instead of process-wide bypasses.").number("timeoutMs", "Socket timeout in milliseconds", {
203
+ default: 3e4,
204
+ minimum: 1e3,
205
+ maximum: 12e4
206
+ }).number("maxResponseBytes", "Maximum number of raw response bytes to capture before truncating the exchange", {
207
+ default: 512e3,
208
+ minimum: 1024,
209
+ maximum: 10485760
210
+ }).requiredOpenWorld("host", "requestText")),
211
+ tool("http2_probe", (t) => t.desc("Probe an HTTP/2 endpoint.").string("url", "Absolute http:// or https:// URL to probe").string("method", "HTTP method token to send. Default: GET").object("headers", { additionalProperties: { type: "string" } }, "Optional request headers to include. Header names are normalized to lowercase for HTTP/2.").string("body", "Optional UTF-8 request body to send with the probe").array("alpnProtocols", { type: "string" }, "ALPN protocols to offer").object("authorization", networkAuthorizationSchema, "Request-scoped authorization policy for private-network or insecure-HTTP targets. Use exact hosts/CIDRs instead of process-wide bypasses.").number("timeoutMs", "Probe timeout in milliseconds", {
212
+ default: 3e4,
213
+ minimum: 1e3,
214
+ maximum: 12e4
215
+ }).number("maxBodyBytes", "Maximum number of response body bytes to capture for the snippet before truncating", {
216
+ default: 32768,
217
+ minimum: 1024,
218
+ maximum: 1048576
219
+ }).requiredOpenWorld("url")),
220
+ tool("http2_frame_build", (t) => t.desc("Build a raw HTTP/2 frame.").string("frameType", "HTTP/2 frame type: DATA, SETTINGS, PING, WINDOW_UPDATE, RST_STREAM, GOAWAY, or RAW").number("streamId", "Stream identifier (0 for connection-level frames). Default: 0", {
221
+ default: 0,
222
+ minimum: 0,
223
+ maximum: 2147483647
224
+ }).number("flags", "Raw flags byte (0-255). Overrides type-specific defaults when set.", {
225
+ minimum: 0,
226
+ maximum: 255
227
+ }).number("frameTypeCode", "Explicit frame type code for RAW frames (0-255). Required when frameType is RAW.", {
228
+ minimum: 0,
229
+ maximum: 255
230
+ }).string("payloadHex", "Frame payload as a hex string. Mutually exclusive with payloadText.").string("payloadText", "Frame payload as a text string. Mutually exclusive with payloadHex.").string("payloadEncoding", "Encoding for payloadText: utf8 or ascii. Default: utf8").array("settings", {
231
+ type: "object",
232
+ properties: {
233
+ id: { type: "number" },
234
+ value: { type: "number" }
235
+ },
236
+ required: ["id", "value"]
237
+ }, "Array of {id, value} entries for SETTINGS frames").boolean("ack", "Set the ACK flag on SETTINGS or PING frames").string("pingOpaqueDataHex", "Exactly 8 bytes of opaque data for PING frames (hex string)").number("windowSizeIncrement", "Window size increment for WINDOW_UPDATE frames (1 to 2^31-1)").number("errorCode", "Error code for RST_STREAM or GOAWAY frames (0 to 2^32-1)").number("lastStreamId", "Last stream ID for GOAWAY frames (0 to 2^31-1)").string("debugDataText", "Optional debug data for GOAWAY frames").string("debugDataEncoding", "Encoding for debugDataText: utf8 or ascii. Default: utf8").requiredOpenWorld("frameType")),
238
+ tool("network_rtt_measure", (t) => t.desc("Measure round-trip time to a target URL.").string("url", "Target URL to measure RTT to").string("probeType", "Probe type: tcp, tls, or http. Default: tcp", { default: "tcp" }).number("iterations", "Number of probe iterations (1-50). Default: 5", {
239
+ default: 5,
240
+ minimum: 1,
241
+ maximum: 50
242
+ }).number("timeoutMs", "Per-probe timeout in milliseconds (100-30000). Default: 5000", {
243
+ default: 5e3,
244
+ minimum: 100,
245
+ maximum: 3e4
246
+ }).object("authorization", { additionalProperties: { type: "string" } }, "Authorization policy for network access").requiredOpenWorld("url"))
247
+ ];
248
+ //#endregion
249
+ //#region src/server/domains/network/definitions.ts
250
+ const advancedTools = [
251
+ ...captureTools,
252
+ ...consoleTools,
253
+ ...transportTools,
254
+ ...analysisTools,
255
+ ...probeTools
256
+ ];
257
+ //#endregion
258
+ export { advancedTools as t };
@@ -0,0 +1,28 @@
1
+ import { t as tool } from "./tool-builder-BHJp32mV.mjs";
2
+ //#region src/server/domains/transform/definitions.ts
3
+ const transformsEnum = [
4
+ "constant_fold",
5
+ "string_decrypt",
6
+ "dead_code_remove",
7
+ "control_flow_flatten",
8
+ "rename_vars"
9
+ ];
10
+ const transformTools = [
11
+ tool("ast_transform_preview", (t) => t.desc("Preview lightweight AST-like transforms (string/regex based) and return before/after diff.").string("code", "Source code to transform.").array("transforms", {
12
+ type: "string",
13
+ enum: transformsEnum
14
+ }, "Ordered transform list.").boolean("preview", "Whether to generate line diff output.", { default: true }).required("code", "transforms").query()),
15
+ tool("ast_transform_chain", (t) => t.desc("Create and store an in-memory transform chain.").string("name", "Chain name.").array("transforms", {
16
+ type: "string",
17
+ enum: transformsEnum
18
+ }, "Ordered transform list.").string("description", "Optional chain description.").required("name", "transforms")),
19
+ tool("ast_transform_apply", (t) => t.desc("Apply transforms to input code or a live page scriptId.").string("scriptId", "Target script ID from page debugger context.").string("code", "Direct source code input.").string("chainName", "Use a saved transform chain by name.").array("transforms", {
20
+ type: "string",
21
+ enum: transformsEnum
22
+ }, "Direct transform list (used when chainName is not provided).")),
23
+ tool("crypto_extract_standalone", (t) => t.desc("Extract crypto/sign/encrypt function from current page and generate standalone runnable code.").string("targetFunction", "Target function name/path, e.g. \"window.sign\".").boolean("includePolyfills", "Include minimal runtime polyfills.", { default: true }).required("targetFunction")),
24
+ tool("crypto_test_harness", (t) => t.desc("Run extracted crypto code in worker_threads + vm sandbox and return deterministic test results.").string("code", "Standalone function code.").string("functionName", "Exported function name to execute.").array("testInputs", { type: "string" }, "Input list for test execution.").required("code", "functionName", "testInputs").query()),
25
+ tool("crypto_compare", (t) => t.desc("Compare two crypto implementations against identical test vectors.").string("code1", "Implementation A code.").string("code2", "Implementation B code.").string("functionName", "Function name shared by both implementations.").array("testInputs", { type: "string" }, "Input list for comparison.").required("code1", "code2", "functionName", "testInputs").query())
26
+ ];
27
+ //#endregion
28
+ export { transformTools as t };