Monorepo 结构

Hover 是单一的 pnpm workspace。workspace 中的包有 coremcpvscode-ext(外加 site 文档应用)。整个仓库统一使用 pnpm + ESM。

(已移除、仅保留在 git 历史中的:旧的打包器插件 / 页面内挂件包——vite-plugin-hover@hover-dev/astro / nuxt / nextwebpack-plugin-hover@hover-dev/cli@hover-dev/widget-bootstrap@hover-dev/transform-source——以及旧的探测包 @hover-dev/api-test / @hover-dev/pentest / probe-engine,其 HTTPS-MITM 方案已被 @hover-dev/mcp 内的 CDP 被动抓包取代。)

各个包

作用
@hover-dev/mcppackages/mcpMCP 优先的交付面。引擎之上的一层轻量 MCP 前端:注册接地的操作工具 + crystallize_spec + test_app 提示,并通过 stdio 连接到任何添加它的 agent。发布到 npm。
@hover-dev/corepackages/coreNode 引擎:通过 CDP 启动 / 连接调试用 Chrome、接地的定位与操作、确定性的 writeSpec 晶化器,以及 .hover/ 记忆加载器。对外暴露 MCP 导入的 ./engine 入口。发布到 npm。
hover-devpackages/vscode-ext可选的 VS Code 审查驾驶舱:一张业务地图(Business Map)图谱 + 一个仪表盘(Dashboard)。把引擎打进 .vsixscripts/stage-engine.mjs 对本地 packages/core 执行 npm pack),并在 VS Code 自带的 Node 下启动它。发布者为 hyperyond

dist 入口的包(@hover-dev/core

大多数包把 main / exports 直接指向 src/*.ts,因此消费方的转译器看到的是 TypeScript 源码,零构建步骤。

例外是 @hover-dev/core 它把 main / exports 指向 dist/*.js。原因在于:VS Code 扩展暂存的引擎和 @hover-dev/mcp 包都从构建产物 dist 导入 @hover-dev/core,所以 core 必须构建到 dist

实际影响:

  • 根目录的 postinstall 钩子会在每次 pnpm install 之后构建 core。新克隆能立即拿到可用的 dist/ 产物。
  • 在扩展开发期间修改 core/src 需要执行 pnpm --filter @hover-dev/core build(或开一个 dev watch 终端),暂存引擎才能生效;pnpm --filter hover-dev package 会把 core 重新打包进 .vsix