A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.
This report summarizes scanner evidence for vmoranv/jshookmcp, a TypeScript project with 2,035 GitHub stars. SynthScan examined 766,393 lines of code across 2999 source files, recording 2103 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 6.9 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 603 finding(s).
Are imports declared and package/API names verified? 19 finding(s).
Are wrappers, guards, and repeated structures necessary? 1939 finding(s).
Which changes need focused human review? 2103 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2103 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/setup.ts | 27 | // ── Global mock for PageController evaluate wrappers ───────────────── | COMMENT |
| MEDIUM | tests/setup.registry.ts | 25 | // ── Global mock for PageController evaluate wrappers ───────────────── | COMMENT |
| MEDIUM | tests/native/ScanComparators.coverage.test.ts | 20 | // ── Helpers (same as ScanComparators.test.ts) ───────────────────────────────── | COMMENT |
| MEDIUM | tests/native/ScanComparators.coverage.test.ts | 74 | // ── getValueSize: default branch ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/ScanComparators.coverage.test.ts | 83 | // ── getDefaultAlignment: all uncovered branches ────────────────────────────── | COMMENT |
| MEDIUM | tests/native/ScanComparators.coverage.test.ts | 115 | // ── readTypedValue: uncovered branches ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/ScanComparators.coverage.test.ts | 153 | // ── compareScanValues: uncovered branches ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.coverage.test.ts | 52 | // ── computeStats: boundary branches ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.coverage.test.ts | 170 | // ── classifyBlock: boundary cases ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.coverage.test.ts | 243 | // ── detectSuspiciousSizes: zero-size edge ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.coverage.test.ts | 283 | // ── detectPossibleUaf: non-zero data in free block ─────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.coverage.test.ts | 313 | // ── detectSpray: size tolerance boundary ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.test.ts | 292 | // ── Double-free detection ────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.test.ts | 367 | // ── Shannon entropy (volatility malfind-style heuristic) ──────────── | COMMENT |
| MEDIUM | tests/native/HeapAnalyzer.test.ts | 402 | // ── High-entropy heap block detection ──────────────────────────────── | COMMENT |
| MEDIUM | tests/native/RemoteProxy.test.ts | 21 | // ── mock WebSocket ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/RemoteProxy.test.ts | 61 | // ── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/RemoteProxy.test.ts | 71 | // ── tests ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/RemoteProxy.test.ts | 102 | // ── integration tests with mock WebSocket ────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/RemoteProxy.test.ts | 381 | // ── registry tests ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 23 | // ── constants ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 47 | // ── checksum ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 70 | // ── packet encode/decode ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 133 | // ── run-length encoding ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 192 | // ── parseRspFields ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 218 | // ── hex conversion ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/GdbRspProtocol.test.ts | 268 | // ── target XML ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 103 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 105 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 182 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 184 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 240 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 242 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 291 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 293 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 363 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 365 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 420 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 422 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 468 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 470 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 548 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 550 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 586 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 588 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 621 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 623 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 653 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 655 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 690 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 692 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 721 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 723 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 736 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 738 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 761 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 763 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 874 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 876 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/native/byovd/Hypervisor.test.ts | 1035 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| 1417 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/server/domains/v8-inspector/handlers.coverage.test.ts | 104 | function createMockDepsWithoutPage(): V8InspectorDomainDependencies { | CODE |
| LOW | …ver/domains/v8-inspector/tier-c-tools.coverage.test.ts | 160 | function buildAllocationSnapshotJson(): string { | CODE |
| LOW | tests/server/domains/tls-inspector/handlers.test.ts | 866 | function createWebSocketTestServer(): (socket: NetSocket) => void { | CODE |
| LOW | tests/server/domains/tls-inspector/handlers.test.ts | 1144 | function buildClientHelloWithExtensions(extBuffers: Buffer[]): Buffer { | CODE |
| LOW | …ver/domains/platform/electron-verify-signature.test.ts | 178 | function buildMachoWithCodeSignature(opts: { ident: string; cmsPkcs7Der: Buffer | null }): Buffer { | CODE |
| LOW | tests/server/domains/wasm/detect-obfuscation.test.ts | 34 | function repeatDeadCodeBranchNumeric(nextInstruction: string): string { | CODE |
| LOW | tests/server/domains/wasm/module-structure.test.ts | 200 | function makeTargetFeaturesSection(features: Array<{ prefix: number; name: string }>): Buffer { | CODE |
| LOW | tests/server/domains/shared/export-contract-helpers.ts | 31 | export async function assertDomainExportContract( | CODE |
| LOW⚡ | tests/server/domains/canvas/handlers.test.ts | 59 | function createSequentialMockPageController(...results: unknown[]) { | CODE |
| LOW⚡ | tests/server/domains/canvas/handlers.test.ts | 68 | function createScriptExecutingPageController(context: { | CODE |
| LOW | tests/server/domains/canvas/handlers.test.ts | 82 | function createMockDebuggerManager() { | CODE |
| LOW | …ver/domains/canvas/canvas.handlers.integration.test.ts | 172 | function createMockDebuggerManager( | CODE |
| LOW⚡ | tests/server/domains/canvas/canvas.integration.test.ts | 26 | function createDebuggerManagerMock( | CODE |
| LOW | tests/server/domains/canvas/canvas.coverage.test.ts | 191 | function installDefaultFingerprintCanvasMock() { | CODE |
| LOW | tests/server/domains/canvas/canvas.coverage.test.ts | 265 | function createSequentialMockPageController(...results: unknown[]) { | CODE |
| LOW | tests/server/domains/canvas/canvas.coverage.test.ts | 275 | function createMockDebuggerManager() { | CODE |
| LOW | …s/server/domains/canvas/adapters/three-adapter.test.ts | 189 | function MockWebGLRenderingContext() {}, | CODE |
| LOW | …server/domains/canvas/adapters/babylon-adapter.test.ts | 133 | function MockWebGLRenderingContext() {}, | CODE |
| LOW | …r/domains/canvas/adapters/multi-engine-adapter.test.ts | 76 | function runInterfaceConformanceTests( | CODE |
| LOW | tests/server/domains/browser/page-interaction.test.ts | 75 | function createCamoufoxInteractionContext() { | CODE |
| LOW | …/domains/browser/camoufox-browser-dependencies.test.ts | 4 | function CamoufoxBrowserManagerMock() {} | CODE |
| LOW | …rver/domains/browser/captcha-solver-additional.test.ts | 25 | function installJsonTaskApiFailureMock() { | CODE |
| LOW | …server/domains/browser/captcha-solver-coverage.test.ts | 37 | function installJsonTaskApiFailureMock() { | CODE |
| LOW | …rver/domains/browser/handlers/camoufox-browser.test.ts | 23 | CamoufoxBrowserManager: function CamoufoxBrowserManagerMock() { | CODE |
| LOW | tests/server/domains/workflow/workflow-suggest.test.ts | 64 | function createHandlersWithWorkflows(workflows: ExtensionWorkflowRecord[]): WorkflowHandlers { | CODE |
| LOW | tests/server/domains/process/handlers.test.ts | 25 | UnifiedProcessManager: function UnifiedProcessManagerMock() { | CODE |
| LOW | …ts/server/domains/process/process-enum-threads.test.ts | 17 | UnifiedProcessManager: function UnifiedProcessManagerMock() { | CODE |
| LOW | tests/server/search/ReRanker.test.ts | 124 | function makeReRankerWithSampleTools( | CODE |
| LOW | tests/server/http/SseStream.test.ts | 12 | function createMockResponseFactory() { | CODE |
| LOW | tests/scripts/env-example.test.ts | 180 | function staticReaderEnvironmentKeys(source: string): Set<string> { | CODE |
| LOW | tests/scripts/env-example-contract.ts | 197 | function serializeEnvironmentValue(value: unknown): string | undefined { | CODE |
| LOW | tests/scripts/env-example-contract.ts | 239 | export function collectTypedEnvironmentReaders( | CODE |
| LOW | tests/scripts/env-example-contract.ts | 328 | export function collectCentralConfigDefaults( | CODE |
| LOW | tests/scripts/env-example-contract.ts | 392 | export function collectProcessEnvironmentAccesses( | CODE |
| LOW | tests/scripts/generate-openapi.test.ts | 289 | function serializeWithCatalogEntry(entry: CatalogEntry): string { | CODE |
| LOW | …es/v8-inspector/HeapSnapshotParser.analyzeHeap.test.ts | 66 | function generateSnapshotWithDetachedDOM(): string { | CODE |
| LOW | tests/modules/monitor/ConsoleMonitor.test.ts | 154 | function createCollectorWithSessions(...sessions: Array<any>) { | CODE |
| LOW | tests/modules/tls-inspector/tls-parser.test.ts | 296 | function buildClientHelloWithGroups(groups: number[]): Buffer { | CODE |
| LOW | tests/modules/tls-inspector/tls-parser.test.ts | 301 | function buildClientHelloWithSessionTicket(): Buffer { | CODE |
| LOW | tests/modules/tls-inspector/tls-parser.test.ts | 323 | function buildClientHelloWithExtensions(extBuffers: Buffer[]): Buffer { | CODE |
| LOW | tests/modules/tls-inspector/tls-parser.test.ts | 398 | function buildSupportedGroupsExtension(groups: number[]): Buffer { | CODE |
| LOW | …ts/modules/native-emulator/runtime-diagnostics.test.ts | 26 | function buildSoWithUnresolvedImport(): Uint8Array { | CODE |
| LOW | tests/modules/browser/BrowserDiscovery.branches.test.ts | 49 | function checkDebugPortFromCommandLine( | CODE |
| LOW | tests/modules/stealth/StealthScripts.coverage.test.ts | 59 | function FakeWebGLRenderingContext() {} | CODE |
| LOW | tests/e2e/protocol-runtime-assisted.e2e.test.ts | 174 | async function waitForCapturedSignedRequest( | CODE |
| LOW | tests/e2e/ai-hook-persistent-iframe.e2e.test.ts | 12 | function buildNestedIframeFixtureUrl(): string { | CODE |
| LOW | tests/e2e/helpers/mcp-client.ts | 66 | function isPerformanceSamplingEnabled(): boolean { | CODE |
| LOW | tests/e2e/helpers/capability-probe.ts | 52 | export function recordCapabilityObservation( | CODE |
| LOW | tests/e2e/helpers/capability-probe.ts | 127 | export function getObservedWasmArtifactPath(): string | null { | CODE |
| LOW | scripts/search-tune/report.ts | 82 | export function computeSpearmanImportance(trials: TrialResult[]): ParameterImportance[] { | CODE |
| LOW | scripts/search-tune/datasets/realtime.ts | 63 | export function parseSearchQualitySnapshot(data: unknown): SearchQualityTrackerSnapshot { | CODE |
| LOW | scripts/search-tune/datasets/realtime.ts | 108 | export function convertSearchQualitySnapshot( | CODE |
| LOW | src/native/ConditionEvaluator.ts | 63 | export function validateBreakpointCondition(condition: string | undefined): void { | CODE |
| LOW | src/native/ConditionEvaluator.ts | 93 | export function evaluateBreakpointCondition( | CODE |
| LOW | src/native/Win32Debug.ts | 387 | export function readBreakpointRegisterAddress( | CODE |
| LOW | src/native/Win32Debug.ts | 509 | export function DebugSetProcessKillOnExit(killOnExit: boolean): void { | CODE |
| LOW | src/native/NativeMemoryManager.availability.ts | 4 | export async function checkNativeMemoryAvailability( | CODE |
| LOW | src/native/Win32API.ts | 571 | export function NtQueryInformationProcess( | CODE |
| LOW | src/native/RemoteProxy.ts | 346 | export function getOrCreateRemoteProxy(key: string, config: RemoteProxyConfig): RemoteProxy { | CODE |
| LOW | src/native/HandleEnumerator.ts | 115 | function getNtQuerySystemInformation() { | CODE |
| 398 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vitest.config.ts | 21 | COMMENT | |
| LOW | vitest.config.ts | 41 | // authorization policy (`workflow/handlers/network-policy.ts`). Five more are | COMMENT |
| LOW | vitest.config.ts | 101 | 'src/modules/skia-capture/SkiaSceneExtractor.ts', | COMMENT |
| LOW | vitest.config.ts | 121 | // `wasm/handlers.ts`, `wasm/handlers.impl.ts` are 100% `export ... from` | COMMENT |
| LOW | vitest.config.ts | 141 | // `definitions.ts` is 0% covered because nothing loads those Tool[] arrays. | COMMENT |
| LOW | vitest.config.ts | 221 | // History: Phase 1.2/2 SIMD/FP/Dart ~3500 lines lowered these once. | COMMENT |
| LOW | vitest.config.ts | 241 | // 2. CpuEngine ARM64 instruction execution (needs fixture vectors) | COMMENT |
| LOW | vitest.config.ts | 261 | // config's stated "buffer below Linux baseline" policy. Restoring toward 86 | COMMENT |
| LOW | tests/native/GdbRspProtocol.test.ts | 141 | // 0 repeated 5 times: '00000' | COMMENT |
| LOW | tests/contracts/security-overrides.test.ts | 1 | // Supply-chain security contract: pnpm overrides that pin a transitive | COMMENT |
| LOW | tests/server/domains/trace/handlers.test.ts | 1541 | it('exports to HAR 1.4 format with structured entries and captured bodies', async () => { | COMMENT |
| LOW | tests/server/domains/analysis/DeobfuscateCache.test.ts | 221 | }); | COMMENT |
| LOW | …server/domains/exploit-dev/one-gadget.coverage.test.ts | 21 | lookupOneGadgets, | COMMENT |
| LOW | …s/modules/native-emulator/CpuEngine.stackframe.test.ts | 161 | expect(engine.readRegister('x0')).toBe(0x11); | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 161 | // NOTE: sha512Compress helper removed — the algorithm analysis was incomplete. | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 241 | COMMENT | |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 281 | d = c!; | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 301 | // a = T1_t + Sigma0(a_old) + Maj(a_old, b_old, c_old) | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 321 | // | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 341 | // So the register mapping I had above is correct. The question is: | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 361 | // And the new accumulator state stored in Vd after H would be [a_t2, b_t2] | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 381 | COMMENT | |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 401 | // rd[0]' = d0 + Σ1(h + core_T1_0 + K0+W0) + Ch(h + core_T1_0 + K0+W0, e, f) | COMMENT |
| LOW | …sts/modules/native-emulator/simd-crypto-sha512.test.ts | 421 | // SHA256H: Vd.4S=[a,b,c,d], Vn.4S=[e,f,g,h], Vm.4S=[wk0,wk1,wk2,wk3] | COMMENT |
| LOW | tests/modules/native-emulator/simd-crypto-sha3.test.ts | 281 | // SHA-3 instruction encodings (verified against binutils/Go asm + HotSpot | COMMENT |
| LOW | tests/modules/webgpu/CommandHook.leak-fix.test.ts | 101 | // outer-catch (onSubmittedWorkDone fails). The fix uses try/finally | COMMENT |
| LOW | scripts/search-tune/search-space.ts | 1 | /** | COMMENT |
| LOW | .github/workflows/publish-mcp-registry.yml | 1 | name: Publish MCP Registry | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 1 | name: Publish Packages | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 21 | # - `contents: read` stays for checkout/tag validation. | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 41 | # | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 61 | # disallow bypass 2fa tokens (recommended)" | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 81 | # Since 2026-07-28 npm scans every package AT PUBLISH TIME and may publish it | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 101 | # capabilities and their legitimate use. Verified in the tarball with | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 121 | # referenced it were deleted; the public contract is unchanged. | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 141 | # configuration problem — a direct OIDC publish of this package is a policy | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 161 | # operation and used to answer E403 "Please enable 2fa for your account". | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 181 | # >= 11.15.0 for `npm stage` (used by the staged-version checks below), | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 201 | # the *staging area* and exits 0 ("Your package is being processed and may take | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 221 | # `npm stage list @jshookmcp/jshook` answered HTTP 200 with `[]` — both on | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 241 | # ⚠️ CORRECTION, verified 2026-10-09: 0.4.0 is NOT staged — it is BLOCKED. | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 281 | scope: '@jshookmcp' | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 341 | exit 0 | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 441 | # for every consumer (it exited 0 unless it could see a dev checkout — | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 481 | # Fulcio. Requires `id-token: write` (set at workflow level above). | COMMENT |
| LOW | .github/workflows/publish-packages.yml | 581 | - name: Upgrade npm CLI | COMMENT |
| LOW | .github/workflows/ci.yml | 81 | # The step above OVERWRITES the three generated-*.ts files, so every | COMMENT |
| LOW | .github/workflows/ci.yml | 101 | # `metadata:check` guards BOTH copies of the tool count: the generated | COMMENT |
| LOW | src/native/VehDebugger.ts | 141 | function buildShellcode(pSharedMem: bigint, pSetEvent: bigint): Buffer { | COMMENT |
| LOW | src/native/Win32Debug.ts | 121 | // so x86-named fields stay meaningful on aarch64). | COMMENT |
| LOW | src/native/Speedhack.ts | 61 | MEM, | COMMENT |
| LOW | src/native/MonoAnalyzer.ts | 681 | private walkClassTable( | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 781 | // Start with CR0.PE (bit 0) + CR0.PG (bit 31) + CR0.NE (bit 5, x87 native exception) | COMMENT |
| LOW | src/native/platform/DarwinBreakpointEngine.ts | 161 | // ── ARM64 debug state layout ──────────────────────────────────────────── | COMMENT |
| LOW | src/native/syscall/ProcessMasquerade.ts | 381 | if (status < 0) { | COMMENT |
| LOW | src/server/MCPServer.ts | 321 | this.detailedData = new DetailedDataManager(); | COMMENT |
| LOW | src/server/domains/memory/manifest.ts | 161 | // ── Win32-only tool names ── | COMMENT |
| LOW | src/server/domains/memory/handlers/find-accesses.ts | 121 | // EXCEPTION_SINGLE_STEP trap → real faulting-instruction bytes via | COMMENT |
| LOW | …rver/domains/exploit-dev/handlers/egghunter-encoder.ts | 201 | // Structure: | COMMENT |
| LOW | src/server/domains/native-emulator/handler-trace.ts | 301 | // Always capture tableReg value when set — critical for tracking | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 211 | // Step 1: Analyze mitigations | COMMENT |
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 225 | // Step 2: Find gadgets | COMMENT |
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 247 | // Step 3: Check cache stats | COMMENT |
| LOW⚡ | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1300 | // Step 1: Fingerprint | COMMENT |
| LOW⚡ | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1308 | // Step 2: Scene dump | COMMENT |
| LOW | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1319 | // Step 3: Pick | COMMENT |
| LOW | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1330 | // Step 4: Trace | COMMENT |
| LOW⚡ | src/native/byovd/Hypervisor.ts | 1676 | // Step 2: Read PML4 entry | COMMENT |
| LOW⚡ | src/native/byovd/Hypervisor.ts | 1683 | // Step 3: Read PDPT entry | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1652 | // Step 1: Read CR3 (PML4 physical base) — but we don't have CR3 from user mode. | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1696 | // Step 4: Read PD entry | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1709 | // Step 5: Read PT entry | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 452 | // Step 1: Open SCM | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 460 | // Step 2: Create kernel service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 498 | // Step 3: Start the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 508 | // Step 4: Open device handle | COMMENT |
| LOW | src/native/byovd/ByovdManager.ts | 534 | // Step 5: Verify IOCTL works with a self-test read | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 865 | // Step 1: Close device handle | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 870 | // Step 2: Stop the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 876 | // Step 3: Delete the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 879 | // Step 4: Close service handle | COMMENT |
| LOW⚡ | src/server/domains/memory/handlers/address-formula.ts | 89 | // Step 1: resolve base | COMMENT |
| LOW⚡ | src/server/domains/memory/handlers/address-formula.ts | 96 | // Step 2: apply operations left-to-right | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 258 | // Step 1: Allocate victim ${targetType} objects (fill the freelist) | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 264 | // Step 2: Create hole by de-referencing victims[50] | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 267 | // Step 3: Allocate attacker in freed slot | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 270 | // Step 4: Use dangling reference via victims array`; | COMMENT |
| LOW | src/server/domains/canvas/handlers/trace.ts | 46 | // Step 1: Enable debugger and set event breakpoint | COMMENT |
| LOW⚡ | src/server/domains/canvas/handlers/trace.ts | 64 | // Step 2: Dispatch click at coordinates | COMMENT |
| LOW⚡ | src/server/domains/canvas/handlers/trace.ts | 70 | // Step 3: Wait for debugger to pause on the event breakpoint | COMMENT |
| LOW | src/server/domains/canvas/handlers/trace.ts | 89 | // Step 4: Record evidence | COMMENT |
| LOW⚡ | src/modules/v8-inspector/DominatorTreeBuilder.ts | 244 | // Step 1: DFS to compute preorder numbering | COMMENT |
| LOW⚡ | src/modules/v8-inspector/DominatorTreeBuilder.ts | 247 | // Step 2: Compute semi-dominators and immediate dominators | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 378 | // Step 2: Compute semi-dominator of w | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 402 | // Step 3: Implicitly define idom for nodes in bucket of parent. | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 424 | // Step 4: Adjust idom for nodes that had deferred computation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 211 | // Step 1: Analyze mitigations | COMMENT |
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 225 | // Step 2: Find gadgets | COMMENT |
| LOW | …s/server/domains/exploit-dev/caching-benchmark.test.ts | 247 | // Step 3: Check cache stats | COMMENT |
| LOW⚡ | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1300 | // Step 1: Fingerprint | COMMENT |
| LOW⚡ | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1308 | // Step 2: Scene dump | COMMENT |
| LOW | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1319 | // Step 3: Pick | COMMENT |
| LOW | …ver/domains/canvas/canvas.handlers.integration.test.ts | 1330 | // Step 4: Trace | COMMENT |
| LOW⚡ | src/native/byovd/Hypervisor.ts | 1676 | // Step 2: Read PML4 entry | COMMENT |
| LOW⚡ | src/native/byovd/Hypervisor.ts | 1683 | // Step 3: Read PDPT entry | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1652 | // Step 1: Read CR3 (PML4 physical base) — but we don't have CR3 from user mode. | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1696 | // Step 4: Read PD entry | COMMENT |
| LOW | src/native/byovd/Hypervisor.ts | 1709 | // Step 5: Read PT entry | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 452 | // Step 1: Open SCM | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 460 | // Step 2: Create kernel service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 498 | // Step 3: Start the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 508 | // Step 4: Open device handle | COMMENT |
| LOW | src/native/byovd/ByovdManager.ts | 534 | // Step 5: Verify IOCTL works with a self-test read | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 865 | // Step 1: Close device handle | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 870 | // Step 2: Stop the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 876 | // Step 3: Delete the service | COMMENT |
| LOW⚡ | src/native/byovd/ByovdManager.ts | 879 | // Step 4: Close service handle | COMMENT |
| LOW⚡ | src/server/domains/memory/handlers/address-formula.ts | 89 | // Step 1: resolve base | COMMENT |
| LOW⚡ | src/server/domains/memory/handlers/address-formula.ts | 96 | // Step 2: apply operations left-to-right | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 258 | // Step 1: Allocate victim ${targetType} objects (fill the freelist) | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 264 | // Step 2: Create hole by de-referencing victims[50] | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 267 | // Step 3: Allocate attacker in freed slot | COMMENT |
| LOW⚡ | …r/domains/exploit-dev/handlers/HeapExploitGenerator.ts | 270 | // Step 4: Use dangling reference via victims array`; | COMMENT |
| LOW | src/server/domains/canvas/handlers/trace.ts | 46 | // Step 1: Enable debugger and set event breakpoint | COMMENT |
| LOW⚡ | src/server/domains/canvas/handlers/trace.ts | 64 | // Step 2: Dispatch click at coordinates | COMMENT |
| LOW⚡ | src/server/domains/canvas/handlers/trace.ts | 70 | // Step 3: Wait for debugger to pause on the event breakpoint | COMMENT |
| LOW | src/server/domains/canvas/handlers/trace.ts | 89 | // Step 4: Record evidence | COMMENT |
| LOW⚡ | src/modules/v8-inspector/DominatorTreeBuilder.ts | 244 | // Step 1: DFS to compute preorder numbering | COMMENT |
| LOW⚡ | src/modules/v8-inspector/DominatorTreeBuilder.ts | 247 | // Step 2: Compute semi-dominators and immediate dominators | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 378 | // Step 2: Compute semi-dominator of w | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 402 | // Step 3: Implicitly define idom for nodes in bucket of parent. | COMMENT |
| LOW | src/modules/v8-inspector/DominatorTreeBuilder.ts | 424 | // Step 4: Adjust idom for nodes that had deferred computation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ver/domains/native-bridge/ghidra-bridge-tcp-actions.ts | 66 | ' return None', | CODE |
| HIGH | …ver/domains/native-bridge/ghidra-bridge-tcp-actions.ts | 67 | ' return None', | CODE |
| HIGH | src/modules/emulator/EmulatorCodeGen.ts | 317 | lines.push(' return None'); | CODE |
| HIGH | src/modules/process/memory/injector.ts | 482 | print("ERROR_INJECT: mmap failed") | CODE |
| HIGH⚡ | src/modules/process/memory/injector.ts | 493 | print(f"SUCCESS_INJECT: {int(res)}") | CODE |
| HIGH⚡ | src/modules/process/memory/injector.ts | 495 | print(f"ERROR_INJECT: {str(e)}") | CODE |
| HIGH | src/modules/process/memory/injector.ts | 530 | print("ERROR_INJECT: " + res.GetError()) | CODE |
| HIGH⚡ | src/modules/process/memory/injector.ts | 541 | print("ERROR_INJECT: write failed") | CODE |
| HIGH⚡ | src/modules/process/memory/injector.ts | 548 | print("SUCCESS_INJECT") | CODE |
| HIGH⚡ | src/modules/process/memory/injector.ts | 550 | print("ERROR_INJECT: " + str(e)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/server/domains/streaming/streaming-ws.test.ts | 217 | const registeredEvents = mocks.session.on.mock.calls.map((c: any[]) => c[0]); | CODE |
| CRITICAL | tests/server/domains/streaming/streaming-ws.test.ts | 1002 | const removedEvents = mocks.session.off.mock.calls.map((c: any[]) => c[0]); | CODE |
| CRITICAL | …ts/modules/browser/BrowserTargetSessionManager.test.ts | 504 | const addScriptCalls = parentSession.pageSession.send.mock.calls.filter( | CODE |
| CRITICAL | tests/modules/debugger/ScriptManager.impl.class.test.ts | 203 | cdp.session.send.mock.calls.filter(([method]) => method === 'Debugger.getScriptSource'), | CODE |
| CRITICAL | tests/modules/debugger/ScriptManager.impl.class.test.ts | 210 | cdp.session.send.mock.calls.filter(([method]) => method === 'Debugger.getScriptSource'), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/native/syscall/InstrumentationCallbackDetector.ts | 257 | // Compute median (more robust than mean against outliers) | COMMENT |
| MEDIUM | …server/domains/browser/handlers/safe-code-transform.ts | 111 | // Use JSON.stringify for robust escaping | COMMENT |
| MEDIUM | src/modules/webgpu/WgslParser.ts | 71 | // scanner is robust against it and against nested struct definitions in | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/modules/process/memory/injector.ts | 494 | except Exception as e: | CODE |
| LOW⚡ | src/modules/process/memory/injector.ts | 549 | except Exception as e: | CODE |
| MEDIUM | src/modules/process/memory/injector.ts | 476 | def inject(): | CODE |
| MEDIUM | src/modules/process/memory/injector.ts | 520 | def __lldb_init_module(debugger, internal_dict): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/server/MCPServer.tools.ts | 20 | return -32002; // Custom ResourceNotFound, standard is -32601 but we use -32002 as requested | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/server/domains/wasm/string-extract.test.ts | 96 | expect(classifyString('user@example.com')).toContain('email'); | CODE |
| LOW | tests/modules/monitor/NetworkMonitor.impl.test.ts | 380 | session.send.mockResolvedValue({ body: 'placeholder', base64Encoded: false }); | CODE |
| LOW | tests/modules/native-emulator/bionic-stdio.test.ts | 42 | const files = new Map([['/system/bin/su', ASCII('placeholder')]]); | CODE |
| LOW | src/server/domains/shared/capabilities.ts | 81 | stubType: 'simulated' | 'partial' | 'placeholder' | 'unavailable'; | CODE |