Monorepo 结构
Hover 是单一的 pnpm workspace。workspace 中的包有 core、mcp 和 vscode-ext(外加 site 文档应用)。整个仓库统一使用 pnpm + ESM。
(已移除、仅保留在 git 历史中的:旧的打包器插件 / 页面内挂件包——vite-plugin-hover、@hover-dev/astro / nuxt / next、webpack-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/mcp(packages/mcp) | MCP 优先的交付面。引擎之上的一层轻量 MCP 前端:注册接地的操作工具 + crystallize_spec + test_app 提示,并通过 stdio 连接到任何添加它的 agent。发布到 npm。 |
@hover-dev/core(packages/core) | Node 引擎:通过 CDP 启动 / 连接调试用 Chrome、接地的定位与操作、确定性的 writeSpec 晶化器,以及 .hover/ 记忆加载器。对外暴露 MCP 导入的 ./engine 入口。发布到 npm。 |
hover-dev(packages/vscode-ext) | 可选的 VS Code 审查驾驶舱:一张业务地图(Business Map)图谱 + 一个仪表盘(Dashboard)。把引擎打进 .vsix(scripts/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(或开一个devwatch 终端),暂存引擎才能生效;pnpm --filter hover-dev package会把 core 重新打包进.vsix。