用途:维护由 Fern 生成的 Deepgram JavaScript/TypeScript SDK。src/ 下多数文件为自动生成,不应直接编辑;部分文件为手写或在 .fernignore 中受保护,避免被 Fern 覆盖。
主要能力:
- 冻结分类规则。.fernignore 条目分两类:永久冻结(完全手写或仓库维护,Fern 不应拥有)与临时冻结(生成文件带本地补丁,重生成前需临时改为 .bak)。当前所有条目均为永久冻结,暂无临时冻结项。永久冻结项包括 src/CustomClient.ts、src/index.ts、scripts/ 下多个脚本、webpack.config.js、tests/browser/、tests/esm-build.test.ts、tests/unit/*、tests/wire/websocket/、tests/wire/listen/v1/transcription.test.ts、vitest.config.mts、Makefile、MIGRATION_GUIDE_V4_TO_V5.md、README.md、CHANGELOG.md、docs/、examples/、.npmignore、.gitignore、.npmrc、.github/、CLAUDE.md、AGENTS.md、.claude/、.agents/、.mcp.json。
- 重生成准备:从 main 建分支 lo/sdk-gen-<YYYY-MM-DD>,推送并开 PR,标题 chore: SDK regeneration <YYYY-MM-DD>;读取并分类 .fernignore;仅对临时冻结文件复制为 .bak 并替换路径;提交 chore: unfreeze files pending regen。
- 重生成后:对比 .bak 与新生成文件,仅重新应用仍需要的补丁;将仍需冻结的条目从 .bak 改回原路径,生成器已正确的条目删除;删除 .bak;运行验证;提交 chore: re-apply manual patches after regen。
使用方式与验证命令:make build && make test && make lint;对应 pnpm build、pnpm test、pnpm lint、pnpm check。底层为 tsc 双配置加 ESM 重命名脚本、vitest、Biome。
限制与注意:不要直接编辑 src/api/ 下多数生成文件,优先改 Fern 输入或重生成后审查补丁;src/CustomClient.ts 是风险最高的永久包装,涉及认证前缀、浏览器子协议认证、自定义 WebSocket 启动、二进制处理与 createConnection() 别名;仓库同时发布 CJS 与 ESM,生成器变更后需验证两者;浏览器 WebSocket 认证行为有意与 Node 不同。AGENTS.md 是维护者事实来源,冻结列表或流程变化时需同步本技能。