github TypeScript analyzed 73f59a6

Hyperyond/Hover

github

Open-source Vibe Testing suite: an MCP server for the coding agent you already run, a VS Code review cockpit, and CI. Your agent explores your app and crystallizes each flow into a plain @playwright/test spec you own — record == replay, runs in CI with zero AI.

maintainer
Hyperyond
license
Apache-2.0
first seen
2026-06-05
last seen
2026-07-14
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 28 tools
transport stdio counts 28 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • assert_visible
  • browser_navigate
  • browser_snapshot
  • capture_requests
  • check_control
  • click_control
  • cloud_context
  • cloud_failures
  • cloud_run_result
  • crystallize_a11y_spec
  • crystallize_api_spec
  • crystallize_spec
  • crystallize_visual_spec
  • declare_guard
  • detect_shared_flows
  • extract_page_objects
  • fill_control
  • lint_map
  • optimize_brief
  • promote_optimized_spec
  • recall_business_knowledge
  • recall_fact
  • record_fact
  • replay_request
  • replay_spec
  • save_optimized_spec
  • select_control
  • verify_specs
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 73f59a6 · analyzer v33 · 1w ago

skills & prompt files 1

code evidence vvscode-v0.45.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 91

filesystem 43

  • fs Hyperyond-Hover-73f59a6/packages/core/src/activeEnv.ts :13 import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/core/src/cloud.ts :16 import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/core/src/memory/businessMemory.ts :21 import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
  • fs Hyperyond-Hover-73f59a6/packages/core/src/memory/gitignore.ts :17 import { readFile, writeFile } from 'node:fs/promises';
  • fs Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :11 import { existsSync, unlinkSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/core/src/sessions/sessions.ts :12 import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/apiMap.ts :20 import { mkdir, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/declareGuard.ts :15 import { mkdir, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/detectSharedFlows.ts :20 import { readdir, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/extractPageObjects.ts :13 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/lintWiki.ts :17 import { readFile, readdir } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/optimizeSpec.ts :13 import { readFile, mkdir, writeFile, readdir, rm } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/pageObjectManifest.ts :15 import { mkdir, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/sidecar.ts :18 import { mkdir, writeFile, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/wikiLog.ts :13 import { appendFile, mkdir, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeA11ySpec.ts :14 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeApiSpec.ts :12 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeSpec.ts :19 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeVisualSpec.ts :13 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/cloud.test.ts :1 import { mkdtempSync, readFileSync, rmSync, statSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/memory/businessMemory.test.ts :2 import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/memory/gitignore.test.ts :2 import { mkdtempSync, rmSync, writeFileSync, readFileSync, existsSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/sessions/sessions.test.ts :2 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/apiMap.test.ts :2 import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/declareGuard.test.ts :2 import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/detectSharedFlows.test.ts :2 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/extractPageObjects.test.ts :2 import { mkdtemp, rm, readFile, readdir } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/lintWiki.test.ts :2 import { mkdtemp, rm, mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/multiType.test.ts :2 import { mkdtemp, rm, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/optimizeSpec.test.ts :4 } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/sidecar.test.ts :2 import { mkdtempSync, rmSync, mkdirSync, writeFileSync, existsSync } from 'node:fs';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/wikiLog.test.ts :2 import { mkdtemp, rm, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeApiSpec.test.ts :2 import { mkdtemp, rm, readFile } from 'node:fs/promises';
  • fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeSpec.test.ts :2 import { mkdtempSync, rmSync, readFileSync, writeFileSync, existsSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/mcp/src/hook.ts :37 import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :30 import { existsSync, readFileSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/businessMapView.ts :56 json = JSON.parse(Buffer.from(await vscode.workspace.fs.readFile(uri)).toString('utf-8'));
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/cloud.ts :16 import { rmSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/environments.ts :95 const buf = await vscode.workspace.fs.readFile(uri);
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/environmentsView.ts :371 const existing = Buffer.from(await vscode.workspace.fs.readFile(envUri)).toString('utf8');
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/extension.ts :22 import { existsSync, readFileSync, mkdirSync } from 'node:fs';
  • fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :96 await vscode.workspace.fs.writeFile(vscode.Uri.joinPath(folder, '.hover', 'runs', ledgerName), entry);
  • fs (weak) Hyperyond-Hover-73f59a6/scripts/postinstall-build.mjs :13 import { existsSync, readdirSync, statSync } from 'node:fs';

shell / exec 4

  • shell Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :10 import { spawn } from 'node:child_process';
  • shell Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :32 import { execFile } from 'node:child_process';
  • shell Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :11 import { execFile } from 'node:child_process';
  • shell (weak) Hyperyond-Hover-73f59a6/scripts/postinstall-build.mjs :16 import { spawn } from 'node:child_process';

network 7

  • net Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :113 const res = await fetch(`http://localhost:${port}/json/version`, { signal: AbortSignal.timeout(1500) });
  • net (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeApiSpec.test.ts :74 expect(src).toContain('await request.fetch(');
  • net Hyperyond-Hover-73f59a6/packages/mcp/src/hook.ts :51 fetch(url, { ...init, signal: AbortSignal.timeout(CLOUD_TIMEOUT_MS) });
  • net Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :95 await fetch(TARGET, { method: 'HEAD', signal: AbortSignal.timeout(4000), redirect: 'manual' });
  • net Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/controller.ts :366 const res = await ctx.fetch(opts.url, { method: m, ...reqOpts });
  • net Hyperyond-Hover-73f59a6/packages/vscode-ext/src/extension.ts :183 await fetch(url, { signal: ctrl.signal });
  • net Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :46 const r = await fetch(`https://api.github.com${path}`, {

tool registrations 28

  • browser_navigate Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :156
  • browser_snapshot Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :162
  • click_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :172
  • fill_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :182
  • select_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :204
  • check_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :210
  • assert_visible Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :219
  • recall_business_knowledge Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :228
  • recall_fact Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :238
  • record_fact Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :250
  • crystallize_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :273
  • capture_requests Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :290
  • replay_request Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :303
  • crystallize_api_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :323
  • crystallize_visual_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :337
  • crystallize_a11y_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :359
  • replay_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :381
  • verify_specs Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :393
  • detect_shared_flows Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :407
  • extract_page_objects Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :417
  • lint_map Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :428
  • optimize_brief Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :441
  • save_optimized_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :453
  • promote_optimized_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :466
  • cloud_context Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :478
  • cloud_failures Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :488
  • cloud_run_result Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :500
  • declare_guard Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :513

install hooks 4

  • prepare Hyperyond-Hover-73f59a6/package.json :15 husky
  • postinstall Hyperyond-Hover-73f59a6/package.json :16 node scripts/postinstall-build.mjs
  • prepack Hyperyond-Hover-73f59a6/packages/core/package.json :60 pnpm run clean && pnpm run build
  • prepack Hyperyond-Hover-73f59a6/packages/mcp/package.json :42 pnpm run clean && pnpm run build

declared dependencies 9

  • @commitlint/cli@^19.7.0
  • @commitlint/config-conventional@^19.7.0
  • @playwright/test@^1.60.0
  • @types/node@^25.9.1
  • concurrently@^9.2.1
  • cross-env@^10.1.0
  • husky@^9.1.7
  • tsx@^4.22.0
  • typescript@^5.9.0