Blocked-by: #5087
由 #5087 的实现派生。修复落在 packages/spec,而 #5087 的 PR 被派发约束明确禁止碰 spec(同批 #5080 / #4001 正在 spec 内作业,避免撞车),故单独立单。
PM 分诊(勿在解除前派发):除上面的 Blocked-by 外,还需等 spec 车道空出 —— #5080 / #4001 在飞期间本单不可进,因为本单要动的生成物 content/docs/references/system/email-config.mdx 走 merge=os-regen,会静默吞掉一侧改动。详见本单评论。
现状
packages/spec/src/system/email-config.zod.ts:
EmailProviderSchema = z.enum(['log', 'resend', 'postmark']) —— 不含 'smtp'。
- 同文件该 schema 的 TSDoc 明写:「Self-hosted SMTP is intentionally NOT shipped in plugin-email; apps that need SMTP register a custom
IEmailTransport themselves and pass it via EmailServicePluginOptions.transport.」
#5087 落地后这两句都不再成立:@objectstack/plugin-email 已内置 SmtpTransport(ADR-0012,nodemailer 惰性加载),EmailServicePluginOptions.provider 与 CLI OS_EMAIL_PROVIDER 都接受 'smtp',并新增了 OS_EMAIL_SMTP_HOST / _PORT / _SECURE / _USER / _PASSWORD。
影响
- 用
EmailServiceConfig 类型标注 objectstack.config.ts 的作者写 provider: 'smtp' 会拿到类型错误(运行时其实可用 —— CLI 直接读 config.email,不过这个 schema)。
- 生成文档
content/docs/references/system/email-config.mdx 的 Allowed Values 仍只列三个值,注释也仍在劝人自带 transport。AI 作者读到的就是「SMTP 不受支持」—— 与运行时实际能力相反的 declared ≠ implemented。
建议改动
EmailProviderSchema 增加 'smtp'(纯加值,非破坏性,不需要 ADR-0087 conversion/migration)。
- 重写该段 TSDoc:SMTP 由 plugin-email 内置(ADR-0012),nodemailer 为惰性 import。
- 顺带说明
EmailServiceConfig.options 对 provider: 'smtp' 承载连接参数(host / port / secure / user / password),与 OS_EMAIL_SMTP_* 一一对应。
- 按 AGENTS.md:
pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec check:generated --fix,提交被证明过期的生成物(至少 email-config.mdx)。
验收
EmailServiceConfig 类型接受 provider: 'smtp';
- 生成的 email-config 参考文档列出
smtp 并且不再宣称 SMTP 需要自带 transport;
- spec 的生成物门禁全绿。
Blocked-by: #5087
由 #5087 的实现派生。修复落在
packages/spec,而 #5087 的 PR 被派发约束明确禁止碰 spec(同批 #5080 / #4001 正在 spec 内作业,避免撞车),故单独立单。现状
packages/spec/src/system/email-config.zod.ts:EmailProviderSchema = z.enum(['log', 'resend', 'postmark'])—— 不含'smtp'。IEmailTransportthemselves and pass it viaEmailServicePluginOptions.transport.」#5087 落地后这两句都不再成立:
@objectstack/plugin-email已内置SmtpTransport(ADR-0012,nodemailer 惰性加载),EmailServicePluginOptions.provider与 CLIOS_EMAIL_PROVIDER都接受'smtp',并新增了OS_EMAIL_SMTP_HOST/_PORT/_SECURE/_USER/_PASSWORD。影响
EmailServiceConfig类型标注objectstack.config.ts的作者写provider: 'smtp'会拿到类型错误(运行时其实可用 —— CLI 直接读config.email,不过这个 schema)。content/docs/references/system/email-config.mdx的 Allowed Values 仍只列三个值,注释也仍在劝人自带 transport。AI 作者读到的就是「SMTP 不受支持」—— 与运行时实际能力相反的 declared ≠ implemented。建议改动
EmailProviderSchema增加'smtp'(纯加值,非破坏性,不需要 ADR-0087 conversion/migration)。EmailServiceConfig.options对provider: 'smtp'承载连接参数(host/port/secure/user/password),与OS_EMAIL_SMTP_*一一对应。pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec check:generated --fix,提交被证明过期的生成物(至少email-config.mdx)。验收
EmailServiceConfig类型接受provider: 'smtp';smtp并且不再宣称 SMTP 需要自带 transport;