@clize/clize 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +19 -17
  2. package/dist/cli.js +484 -373
  3. package/dist/cli.js.map +1 -1
  4. package/dist/core/addresses.js +12 -11
  5. package/dist/core/addresses.js.map +1 -1
  6. package/dist/core/analytics.js +6 -5
  7. package/dist/core/analytics.js.map +1 -1
  8. package/dist/core/authz.js +6 -5
  9. package/dist/core/authz.js.map +1 -1
  10. package/dist/core/billing.js +83 -12
  11. package/dist/core/billing.js.map +1 -1
  12. package/dist/core/credentials.js +3 -1
  13. package/dist/core/credentials.js.map +1 -1
  14. package/dist/core/dns.js +3 -2
  15. package/dist/core/dns.js.map +1 -1
  16. package/dist/core/domain-health.js +74 -50
  17. package/dist/core/domain-health.js.map +1 -1
  18. package/dist/core/domains.js +74 -44
  19. package/dist/core/domains.js.map +1 -1
  20. package/dist/core/email-tx.js +8 -6
  21. package/dist/core/email-tx.js.map +1 -1
  22. package/dist/core/email.js +13 -12
  23. package/dist/core/email.js.map +1 -1
  24. package/dist/core/env-detect.js +7 -14
  25. package/dist/core/env-detect.js.map +1 -1
  26. package/dist/core/handle.js +33 -30
  27. package/dist/core/handle.js.map +1 -1
  28. package/dist/core/install.js +114 -56
  29. package/dist/core/install.js.map +1 -1
  30. package/dist/core/media.js +37 -36
  31. package/dist/core/media.js.map +1 -1
  32. package/dist/core/payments.js +5 -4
  33. package/dist/core/payments.js.map +1 -1
  34. package/dist/core/projects.js +38 -26
  35. package/dist/core/projects.js.map +1 -1
  36. package/dist/core/redirect.js +4 -3
  37. package/dist/core/redirect.js.map +1 -1
  38. package/dist/core/serve.js +2 -1
  39. package/dist/core/serve.js.map +1 -1
  40. package/dist/core/setup.js +11 -9
  41. package/dist/core/setup.js.map +1 -1
  42. package/dist/core/shop.js +17 -16
  43. package/dist/core/shop.js.map +1 -1
  44. package/dist/core/site.js +2 -1
  45. package/dist/core/site.js.map +1 -1
  46. package/dist/core/sites.js +41 -40
  47. package/dist/core/sites.js.map +1 -1
  48. package/dist/core/triage.js +39 -5
  49. package/dist/core/triage.js.map +1 -1
  50. package/dist/core/video.js +45 -43
  51. package/dist/core/video.js.map +1 -1
  52. package/dist/github.js +4 -3
  53. package/dist/github.js.map +1 -1
  54. package/dist/i18n/t.js +65 -0
  55. package/dist/i18n/t.js.map +1 -0
  56. package/dist/i18n/zh.js +1265 -0
  57. package/dist/i18n/zh.js.map +1 -0
  58. package/dist/index.js +61 -40
  59. package/dist/index.js.map +1 -1
  60. package/dist/lib/cloudflare.js +8 -7
  61. package/dist/lib/cloudflare.js.map +1 -1
  62. package/dist/lib/crypto.js +2 -1
  63. package/dist/lib/crypto.js.map +1 -1
  64. package/dist/lib/vercel.js +2 -1
  65. package/dist/lib/vercel.js.map +1 -1
  66. package/dist/lib/zone.js +2 -1
  67. package/dist/lib/zone.js.map +1 -1
  68. package/dist/mcp-profiles.js +5 -1
  69. package/dist/mcp-profiles.js.map +1 -1
  70. package/dist/providers/deploy/cloudflare.js +3 -2
  71. package/dist/providers/deploy/cloudflare.js.map +1 -1
  72. package/dist/providers/email/cloudflare-inbound.js +4 -3
  73. package/dist/providers/email/cloudflare-inbound.js.map +1 -1
  74. package/dist/providers/email/cloudflare-outbound.js +2 -1
  75. package/dist/providers/email/cloudflare-outbound.js.map +1 -1
  76. package/dist/providers/email/resend.js +3 -2
  77. package/dist/providers/email/resend.js.map +1 -1
  78. package/dist/providers/email/ses.js +3 -2
  79. package/dist/providers/email/ses.js.map +1 -1
  80. package/dist/providers/index.js +3 -2
  81. package/dist/providers/index.js.map +1 -1
  82. package/dist/providers/media/google.js +10 -9
  83. package/dist/providers/media/google.js.map +1 -1
  84. package/dist/providers/media/kie.js +12 -11
  85. package/dist/providers/media/kie.js.map +1 -1
  86. package/dist/providers/media/kunavo.js +10 -9
  87. package/dist/providers/media/kunavo.js.map +1 -1
  88. package/dist/providers/media/openai.js +5 -4
  89. package/dist/providers/media/openai.js.map +1 -1
  90. package/dist/providers/media/suno.js +7 -6
  91. package/dist/providers/media/suno.js.map +1 -1
  92. package/dist/providers/registrar/routing.js +2 -1
  93. package/dist/providers/registrar/routing.js.map +1 -1
  94. package/dist/providers/registrar/vercel.js +2 -1
  95. package/dist/providers/registrar/vercel.js.map +1 -1
  96. package/dist/providers/seo/dataforseo.js +5 -4
  97. package/dist/providers/seo/dataforseo.js.map +1 -1
  98. package/dist/providers/seo/gsc.js +5 -4
  99. package/dist/providers/seo/gsc.js.map +1 -1
  100. package/dist/remote.js +25 -22
  101. package/dist/remote.js.map +1 -1
  102. package/dist/selfcheck.js +23 -22
  103. package/dist/selfcheck.js.map +1 -1
  104. package/dist/state/file-store.js +17 -16
  105. package/dist/state/file-store.js.map +1 -1
  106. package/package.json +4 -3
  107. package/skills/clize/SKILL.md +171 -143
  108. package/skills/clize-seo/SKILL.md +2 -2
  109. package/skills/clize-site-build/SKILL.md +97 -41
  110. package/skills/clize-site-debug/SKILL.md +73 -45
@@ -1,10 +1,11 @@
1
- import { chargedAmount, checkMonthlySpendLimit } from "./billing.js";
1
+ import { chargedAmount, checkMonthlySpendLimit, monthSpentUsd } from "./billing.js";
2
2
  import { ensureBalance } from "./autopay.js";
3
3
  import { auditScope, currentProjectId, PENDING_PROJECT_ID, projectFilter, requireProjectId, } from "./projects.js";
4
4
  import { CLOUDFLARE_TLDS } from "../providers/registrar/cloudflare.js";
5
5
  import { nameserversOnVercel } from "../lib/zone.js";
6
6
  import { ClizeError } from "../lib/errors.js";
7
7
  /** @deprecated 仅 Cloudflare 直注的固定后缀;真实可注册能力(含 Vercel)用 listSupportedTlds(ctx)。 */
8
+ import { t } from "../i18n/t.js";
8
9
  export const SUPPORTED_TLDS = CLOUDFLARE_TLDS;
9
10
  /** 列出真实可注册的 TLD:CF 直注的 + 配了 Vercel 时的 500+ 补充(系统按 TLD 自动选注册商)。 */
10
11
  export async function listSupportedTlds(ctx) {
@@ -18,8 +19,8 @@ export async function listSupportedTlds(ctx) {
18
19
  cloudflareDirect: CLOUDFLARE_TLDS,
19
20
  viaVercelCount: vercel.length,
20
21
  note: vercel.length
21
- ? `CF 直注 ${CLOUDFLARE_TLDS.length} (同账号、DNS 一体);其余经 Vercel,共 ${all.length} 个。直接 \`clize domain search <name>.<tld>\`,系统自动选注册商并把 NS 迁回 CF。`
22
- : `Cloudflare 注册商 beta,仅 ${CLOUDFLARE_TLDS.length} 个;配 VERCEL_TOKEN 可解锁 Vercel 500+ TLD(.ai/.io/.co…)。`,
22
+ ? t `${CLOUDFLARE_TLDS.length} TLDs register directly at Cloudflare (same account, DNS included); the rest go through Vercel, ${all.length} in total. Just run \`clize domain search <name>.<tld>\`; the registrar is chosen automatically and the NS is moved back to CF.`
23
+ : t `Cloudflare Registrar beta, only ${CLOUDFLARE_TLDS.length} TLDs; configure VERCEL_TOKEN to unlock Vercel's 500+ TLDs (.ai/.io/.co…).`,
23
24
  tlds: all,
24
25
  };
25
26
  }
@@ -53,7 +54,7 @@ export async function listDomains(ctx) {
53
54
  export async function getDomain(ctx, domain) {
54
55
  const id = await ctx.store.getIdentity(ctx.tenantId, domain);
55
56
  if (!id)
56
- throw new Error(`未找到域名 ${domain}(尚未注册或纳入管理)`);
57
+ throw new Error(t `Domain ${domain} not found (not registered or not managed yet)`);
57
58
  return id;
58
59
  }
59
60
  export async function registerDomain(ctx, domain, opts = {}) {
@@ -65,7 +66,7 @@ export async function registerDomain(ctx, domain, opts = {}) {
65
66
  // 1) 查价 + 可用性(注册商由 RoutingRegistrar 自动选)
66
67
  const [check] = await ctx.providers.registrar.checkAvailability([domain]);
67
68
  if (!check?.available)
68
- throw new Error(`域名 ${domain} 不可注册${check?.reason ? `(${check.reason})` : ""}`);
69
+ throw new Error(t `Domain ${domain} is not available${check?.reason ? `(${check.reason})` : ""}`);
69
70
  const cost = check.registrationCost;
70
71
  // selfPaid:按 checkAvailability 自动选中的注册商判定(平台代付重叠会比首年价选低的那家)。
71
72
  const selfPaid = selfPaidFor(ctx, domain, check.registrar);
@@ -85,7 +86,7 @@ export async function registerDomain(ctx, domain, opts = {}) {
85
86
  await ctx.store.upsertIdentity(ctx.tenantId, {
86
87
  domain,
87
88
  status: "pending",
88
- notes: "DRY_RUN 演练,未真正注册",
89
+ notes: t("DRY_RUN rehearsal, nothing was registered"),
89
90
  projectId,
90
91
  });
91
92
  return {
@@ -95,7 +96,7 @@ export async function registerDomain(ctx, domain, opts = {}) {
95
96
  currency: check.currency,
96
97
  autoRenew,
97
98
  registrar: check.registrar,
98
- message: "演练模式:未真正注册。设 DRY_RUN=false 后执行。",
99
+ message: t("Rehearsal mode: nothing was registered. Set DRY_RUN=false to execute."),
99
100
  };
100
101
  }
101
102
  // 4) 计费闸(仅「托管 + 平台代付」:预付余额 + 加价,先扣后注册;self-host / BYO 自付跳过)
@@ -120,7 +121,7 @@ export async function registerDomain(ctx, domain, opts = {}) {
120
121
  catch (e) {
121
122
  if (charged != null)
122
123
  await ctx.store
123
- .creditBalance(ctx.tenantId, charged, { action: "refund", detail: { domain, reason: "注册失败退款" } })
124
+ .creditBalance(ctx.tenantId, charged, { action: "refund", detail: { domain, reason: t("refund for failed registration") } })
124
125
  .catch(() => {
125
126
  /* 退款失败不掩盖原始错误 */
126
127
  });
@@ -162,7 +163,7 @@ export async function registerDomain(ctx, domain, opts = {}) {
162
163
  autoRenew,
163
164
  ...(viaVercel
164
165
  ? {
165
- note: "域名注册在 VercelDNS 也在 Vercel。要 support@ 邮箱 CF 直注的 TLD,或在 Vercel dashboard 手动关 CDN/设 custom NS 后再 `clize domain import`(API 不支持自动迁)",
166
+ note: t("The domain is registered at Vercel with DNS at Vercel too. For a support@ mailboxuse a TLD Cloudflare registers directly, or turn off the CDN / set custom NS in the Vercel dashboard and then `clize domain import` (the API cannot migrate it automatically)."),
166
167
  }
167
168
  : {}),
168
169
  };
@@ -200,7 +201,7 @@ export async function importDomain(ctx, domain) {
200
201
  domain,
201
202
  zoneId: zone.id,
202
203
  status: "active",
203
- message: `✅ 该域名已在 Cloudflare NS 已生效,可直接 \`clize email setup ${domain}\` 配收发信、\`clize site deploy\` 部署。`,
204
+ message: t `✅ The domain is on Cloudflare with its NS active; run \`clize email setup ${domain}\` for email and \`clize deploy\` to ship a site.`,
204
205
  };
205
206
  }
206
207
  return {
@@ -208,8 +209,8 @@ export async function importDomain(ctx, domain) {
208
209
  zoneId: zone.id,
209
210
  status: zone.status,
210
211
  nameservers: zone.name_servers,
211
- actionRequired: `去你的域名注册商把 NS 改成上面的 nameservers,改完反复跑 \`clize domain import ${domain}\` 直到 status active。`,
212
- warning: `迁 NS 会接管该域名全部 DNSCF full zone 时会尽量自动导入现有记录,但改 NS 前请在你原 DNS 服务商处核对网站 / 邮箱 / 验证记录是否齐全,确认无误再改。`,
212
+ actionRequired: t `Change the NS at your registrar to the nameservers above, then rerun \`clize domain import ${domain}\` until status becomes active.`,
213
+ warning: t("Moving the NS takes over all DNS for the domain. CF tries to import existing records when creating the full zone, but check your current DNS provider for website / email / verification records first and change the NS only once everything is accounted for."),
213
214
  };
214
215
  }
215
216
  // 2) 不在 CF:需新建 zone 接入(演练模式只说明,不真正建)
@@ -217,7 +218,7 @@ export async function importDomain(ctx, domain) {
217
218
  return {
218
219
  dryRun: true,
219
220
  domain,
220
- message: "演练模式:将为该域名在 CF 创建 zone 并返回需配置的 nameserver。设 DRY_RUN=false 后执行。",
221
+ message: t("Rehearsal mode: would create a CF zone for the domain and return the nameservers to configure. Set DRY_RUN=false to execute."),
221
222
  };
222
223
  }
223
224
  const zone = await ctx.cf.createZone(domain);
@@ -238,9 +239,9 @@ export async function importDomain(ctx, domain) {
238
239
  status: zone.status, // 通常 "pending"(等 NS 生效)
239
240
  nameservers: zone.name_servers,
240
241
  nextSteps: [
241
- `1) 到你的域名注册商(GoDaddy / 阿里云 / Namecheap …) NS 改成上面的 nameservers。`,
242
- `2) ⚠️ NS 会接管该域名全部 DNSCF 已尝试自动导入现有记录;改 NS 前请在原 DNS 服务商处核对网站 / 邮箱 / 验证记录是否齐全,确认无误再改 NS。`,
243
- `3) 改完 NS 后反复跑 \`clize domain import ${domain}\` 直到 status active,即可 \`clize email setup ${domain}\` 配收发信。`,
242
+ t("1) At your registrar (GoDaddy / Aliyun / Namecheap …) change the NS to the nameservers above."),
243
+ t("2) ⚠️ Moving the NS takes over all DNS for the domain. CF tried to import existing records; check your current DNS provider for website / email / verification records before changing the NS."),
244
+ t `3) After changing the NS, rerun \`clize domain import ${domain}\` until status becomes active; then \`clize email setup ${domain}\` sets up email.`,
244
245
  ],
245
246
  };
246
247
  }
@@ -298,8 +299,8 @@ export async function workspaceStatus(ctx, opts = {}) {
298
299
  if (ownerId !== projectId) {
299
300
  const ownerSlug = (await ctx.store.listProjects(ctx.tenantId)).find((p) => p.id === ownerId)?.slug ?? "default";
300
301
  drift =
301
- `本地 clize.json 检出 "${ctx.projectSlug}",但其域 ${opts.localDomain} 实际属于项目 "${ownerSlug}" —— ` +
302
- `deploy 会自动按域所属部署;要对齐本地检出就 clize use ${ownerSlug}`;
302
+ t `The local clize.json checks out "${ctx.projectSlug}", but its domain ${opts.localDomain} actually belongs to project "${ownerSlug}" ` +
303
+ t `deploy follows the domain's real project automatically; to align the local checkout run clize use ${ownerSlug}`;
303
304
  }
304
305
  }
305
306
  }
@@ -315,12 +316,12 @@ export async function workspaceStatus(ctx, opts = {}) {
315
316
  ...(drift ? { drift } : {}),
316
317
  ...(projectId === PENDING_PROJECT_ID
317
318
  ? {
318
- projectNote: `项目 "${ctx.projectSlug}" 尚未创建(首次 claim / domain buy 时自动建);当前为空项目视图`,
319
+ projectNote: t `Project "${ctx.projectSlug}" does not exist yet (created automatically on the first claim / domain buy); this is an empty project view`,
319
320
  }
320
321
  : {}),
321
322
  ...(!ctx.projectSlug && projectCount > 1
322
323
  ? {
323
- projectHint: `本租户有 ${projectCount} 个项目,当前未检出(全租户视图)cd 到项目目录( clize use <slug> / 单次 -p <slug>)只看某项目;clize projects 看列表`,
324
+ projectHint: t `This tenant has ${projectCount} projects and none is checked out (tenant-wide view). cd into a project directory (or clize use <slug> / -p <slug> for one call) to see one project; clize projects lists them`,
324
325
  }
325
326
  : {}),
326
327
  ...(opts.identity ? { identity: opts.identity } : {}),
@@ -329,14 +330,22 @@ export async function workspaceStatus(ctx, opts = {}) {
329
330
  // / 未分类,带 class + mailbox);仅在租户 D1 里还没有信时才落到下面的 KV 扫描(未分流)。
330
331
  waiting: waiting.slice(0, STATUS_WAITING_CAP),
331
332
  ...(waiting.length > STATUS_WAITING_CAP
332
- ? { waitingTruncated: `仅列等最久的 ${STATUS_WAITING_CAP}/${waiting.length};按域看全量:clize email inbox <domain>` }
333
+ ? { waitingTruncated: t `Only the ${STATUS_WAITING_CAP} longest-waiting of ${waiting.length} are listed; see everything per domain with clize email inbox <domain>` }
333
334
  : {}),
334
335
  // config 正常态压一行:status 是 agent 每次续上必跑的高频命令,正常值反复进 transcript
335
336
  // 零信息量;只有「会改变行为语义」的状态(dryRun / 缺凭证 / 有限额 / 发信未就绪)才展开。
336
337
  config: configHealth(ctx),
337
338
  // 开销口径随检出走:检出项目 → 本项目本月开销(无归属旧记录归 default);未检出 → 全租户。
338
339
  // 语义细节(月度限额闸仍按全租户)在 SPEC「开销口径」,这里只标口径名,省高频 token。
340
+ //
341
+ // 全租户口径读 **ledger**(余额出入的唯一记录),不读 audit.cost:audit 只在部分调用点
342
+ // 手写 cost,seo / storage 是直接 chargeBalance 的、从不补审计 —— 2026-09-01 实测本租户
343
+ // 「本月花费」显示 $0.00,而余额当月实际走掉 $4.97(101 次 seo 查询)。console 首屏的钱行
344
+ // 与 Billing 的花费构成必须同源,否则就是同一个事实两个数字打架。
345
+ // 项目口径仍用 audit(ledger 没有 project 维度;seo / storage 本就是租户级开销)。
339
346
  spentThisMonthUsd: await (async () => {
347
+ if (!projectId)
348
+ return monthSpentUsd(ctx); // 全租户 = ledger 口径,与月度上限闸同源
340
349
  const scope = await auditScope(ctx);
341
350
  return ctx.store.spentThisMonth(ctx.tenantId, scope[0], scope[1]);
342
351
  })(),
@@ -352,7 +361,7 @@ export async function workspaceStatus(ctx, opts = {}) {
352
361
  site: Boolean(i.site?.url),
353
362
  })),
354
363
  ...(identities.length > STATUS_DOMAINS_CAP
355
- ? { domainsTruncated: `仅列 ${STATUS_DOMAINS_CAP}/${identities.length};全量:clize domain list` }
364
+ ? { domainsTruncated: t `Only ${STATUS_DOMAINS_CAP}/${identities.length} listed; all: clize domain list` }
356
365
  : {}),
357
366
  };
358
367
  }
@@ -366,7 +375,7 @@ function configHealth(ctx) {
366
375
  if (ctx.tenant.monthlySpendLimitUsd != null)
367
376
  issues.monthlySpendLimitUsd = ctx.tenant.monthlySpendLimitUsd;
368
377
  if (ctx.tenant.outboundProvider === "resend" && !ctx.platform.resend.apiKey)
369
- issues.outbound = "resend 已选但未配 RESEND_API_KEY(发信会失败)";
378
+ issues.outbound = t("resend is selected but RESEND_API_KEY is not configured (sending will fail)");
370
379
  return Object.keys(issues).length ? issues : "ok";
371
380
  }
372
381
  export async function auditLog(ctx, limit = 20) {
@@ -381,7 +390,7 @@ export async function setAutoRenew(ctx, domain, enabled) {
381
390
  detail: { domain, enabled },
382
391
  dryRun: true,
383
392
  });
384
- return { dryRun: true, domain, autoRenew: enabled, message: "演练模式:未真正修改。" };
393
+ return { dryRun: true, domain, autoRenew: enabled, message: t("Rehearsal mode: nothing was changed.") };
385
394
  }
386
395
  // 落到真实注册商:从 Identity.registrar(注册时回填的权威来源)取 hint 传给 routing,
387
396
  // 替代它的 TLD 静态猜测 —— 重叠 TLD 在 Vercel 注册时会猜错家,CF 不认该域、开关失效。
@@ -393,7 +402,7 @@ export async function setAutoRenew(ctx, domain, enabled) {
393
402
  detail: { domain, enabled },
394
403
  });
395
404
  await ctx.store.upsertIdentity(ctx.tenantId, { domain, autoRenew: enabled });
396
- return { domain, autoRenew: enabled, message: enabled ? "已开启自动续费" : "已关闭自动续费" };
405
+ return { domain, autoRenew: enabled, message: enabled ? t("Auto-renew turned on") : t("Auto-renew turned off") };
397
406
  }
398
407
  /** 读某域 NS 现状:注册商 + 当前委派(zone 源 NS)+ CF 分配的目标 NS。供 `domain ns`(无参)查看 / 排障。 */
399
408
  export async function getDomainNameservers(ctx, domain) {
@@ -405,7 +414,11 @@ export async function getDomainNameservers(ctx, domain) {
405
414
  const active = zone?.status === "active";
406
415
  return {
407
416
  domain: d,
408
- registrar: id?.status === "external" ? "(外部接入,注册商在别处)" : (id?.registrar ?? "(未知/未纳管)"),
417
+ registrar: id?.status === "handle"
418
+ ? t("(free handle, platform subdomain)")
419
+ : id?.status === "external"
420
+ ? t("(imported; registrar elsewhere)")
421
+ : (id?.registrar ?? t("(unknown / not managed)")),
409
422
  status: id?.status,
410
423
  zoneStatus: zone?.status,
411
424
  // 委派真相以 zoneStatus 为准:active = CF 已在注册局委派里确认到自己的 NS(即已在 CF)。
@@ -414,8 +427,8 @@ export async function getDomainNameservers(ctx, domain) {
414
427
  // ⚠️ original_name_servers 是「建 zone 时 CF 看到的旧 NS」—— 历史值,zone active 后即过时,别当「当前 NS」(正是 §9 那个坑)。
415
428
  originalNameservers: zone?.original_name_servers ?? id?.nameservers,
416
429
  hint: active
417
- ? "zoneStatus=active → 该域已委派给 Cloudflare(当前 NS = cloudflareNameservers);originalNameservers 是迁移前旧值,仅参考。"
418
- : "zoneStatus≠active → NS 尚未生效到 CF。验真实委派查权威 DNS(dns.google),别信原始字段。改 NS:`clize domain ns <域名> <ns…>`。",
430
+ ? t("zoneStatus=active → the domain is delegated to Cloudflare (current NS = cloudflareNameservers); originalNameservers is the pre-migration value, for reference only.")
431
+ : t("zoneStatus≠active → the NS has not taken effect on CF yet. Verify real delegation against authoritative DNS (dns.google); do not trust the raw fields. Change the NS: `clize domain ns <domain> <ns…>`."),
419
432
  };
420
433
  }
421
434
  /**
@@ -427,12 +440,15 @@ export async function getDomainNameservers(ctx, domain) {
427
440
  export async function setDomainNameservers(ctx, domain, nameservers) {
428
441
  const d = domain.toLowerCase();
429
442
  if (!nameservers.length)
430
- throw new Error("需至少一个 nameserver(只想看现状就别带 ns 参数)");
443
+ throw new Error(t("At least one nameserver is required (omit the ns argument to only view the current state)"));
431
444
  const id = await ctx.store.getIdentity(ctx.tenantId, d);
432
445
  const reg = ctx.providers.registrar;
446
+ // 免费 handle:平台子域,NS 由平台 zone 决定,没有「改 NS」这回事。
447
+ if (id?.status === "handle")
448
+ throw new Error(t `${d} is a free handle (platform subdomain); its NS is set by the platform zone and cannot change. For custom NS use your own domain (clize domain buy / import).`);
433
449
  // 外部接入域:clize 没有原注册商权限,改不了 —— 给出目标 NS、引导用户去原注册商改。
434
450
  if (id?.status === "external")
435
- throw new Error(`${d} 是外部接入域,clize 没有它原注册商的权限、无法程序化改 NS。请到你注册该域名的服务商处把 nameservers 改成:${nameservers.join(", ")}。`);
451
+ throw new Error(t `${d} is an imported domain; clize has no access to its registrar and cannot change the NS programmatically. Change the nameservers at the registrar where you bought it to: ${nameservers.join(", ")}.`);
436
452
  // 判真实注册商:registrar 字段(注册时回填 / 对账校正)优先,zone 源 NS 指向 vercel-dns 兜底。
437
453
  const apex = d.split(".").slice(-2).join(".");
438
454
  const zoneId = await ctx.cf.findZoneId(apex).catch(() => undefined);
@@ -441,9 +457,9 @@ export async function setDomainNameservers(ctx, domain, nameservers) {
441
457
  : false;
442
458
  const isVercel = id?.registrar === "vercel" || onVercelNs;
443
459
  if (id?.registrar === "cloudflare" && !isVercel)
444
- throw new Error(`${d} 注册在 Cloudflare Registrar,其 NS 锁定在 Cloudflare、不能指向第三方(CF Registrar 硬限制)。要自管 DNS \`clize dns\` 直接在 CF 上配记录。`);
460
+ throw new Error(t `${d} is registered at Cloudflare Registrar; its NS is locked to Cloudflare and cannot point to a third party (a CF Registrar restriction). To manage DNS yourself, set records directly on CF with \`clize dns\`.`);
445
461
  if (!reg.setNameservers)
446
- throw new Error(`${d} 的注册商不支持程序化改 NS(可能是修复前的存量记录)——先跑注册商对账,或确认它确属 clize 注册。`);
462
+ throw new Error(t `${d}'s registrar does not support changing the NS programmatically (possibly a record from before the fix) — run the registrar reconciliation first, or confirm it was really registered through clize.`);
447
463
  await reg.setNameservers(d, nameservers);
448
464
  await ctx.store
449
465
  .appendAudit(ctx.tenantId, {
@@ -458,10 +474,10 @@ export async function setDomainNameservers(ctx, domain, nameservers) {
458
474
  domain: d,
459
475
  nameservers,
460
476
  registrar: id?.registrar ?? "vercel",
461
- message: `已把 ${d} NS 设为:${nameservers.join(", ")}(注册局生效 + 传播需几分钟;验证查 dns.google,别信注册商自家字段)。`,
477
+ message: t `Set the NS of ${d} to: ${nameservers.join(", ")} (registry update + propagation take a few minutes; verify against dns.google, not the registrar's own fields).`,
462
478
  ...(offCloudflare
463
479
  ? {
464
- warning: "⚠️ NS 已指离 Cloudflare —— 该域上的 clize 邮箱(收信)和站点会停止工作,直到把 NS 指回 CF nameservers",
480
+ warning: t("⚠️ The NS now points away from Cloudflare the domain's clize mailboxes (inbound) and site stop working until the NS points back at CF's nameservers."),
465
481
  }
466
482
  : {}),
467
483
  };
@@ -482,20 +498,20 @@ export async function removeDomain(ctx, domain, opts = {}) {
482
498
  const d = domain.toLowerCase();
483
499
  const id = await ctx.store.getIdentity(ctx.tenantId, d);
484
500
  if (!id)
485
- throw new ClizeError(`${d} 不在你的 clize 账户里(clize domain list 看列表)`, 404);
501
+ throw new ClizeError(t `${d} is not in your clize account (see clize domain list)`, 404);
486
502
  const mailboxes = (await ctx.store.listMailboxesOnDomain?.(ctx.tenantId, d)) ?? [];
487
503
  const carrying = [];
488
504
  if (id.site?.url || id.site?.customDomain)
489
- carrying.push(`站点(${id.site.customDomain || id.site.url})`);
505
+ carrying.push(t `a site (${id.site.customDomain || id.site.url})`);
490
506
  if (id.email?.inboundReady)
491
- carrying.push("收信链路");
507
+ carrying.push(t("inbound email"));
492
508
  if (id.email?.outboundReady)
493
- carrying.push("发信域");
509
+ carrying.push(t("sending domain"));
494
510
  if (mailboxes.length)
495
- carrying.push(`${mailboxes.length} 个邮箱(${mailboxes.map((m) => m.address).join(", ")})`);
511
+ carrying.push(t `${mailboxes.length} mailbox(es) (${mailboxes.map((m) => m.address).join(", ")})`);
496
512
  if (carrying.length && !opts.force)
497
- throw new ClizeError(`${d} 上还跑着:${carrying.join(" · ")}。摘掉后 clize 不再认识这个域 —— 巡检和断链告警也一起没了,` +
498
- `站点 / 邮箱却还在跑,等于亲手造一次静默断链。先拆干净再摘;确认要连着摘就加 --force。`, 409);
513
+ throw new ClizeError(t `${d} still runs: ${carrying.join(" · ")}. Once removed, clize no longer knows this domain — the health check and outage alerts go with it,` +
514
+ t("while the site / mailboxes keep running, which is a silent outage of your own making. Tear them down first, then remove; to remove regardless add --force."), 409);
499
515
  const addresses = await ctx.store.listAddresses(ctx.tenantId, d);
500
516
  for (const a of addresses)
501
517
  await ctx.store.removeAddress(ctx.tenantId, a.address);
@@ -512,8 +528,9 @@ export async function removeDomain(ctx, domain, opts = {}) {
512
528
  removed: true,
513
529
  ...(addresses.length ? { addressesRemoved: addresses.length } : {}),
514
530
  ...(carrying.length ? { wasCarrying: carrying } : {}),
515
- message: `✓ ${d} 已从 clize 摘掉:身份 / 地址档案 / 健康巡检记录都清了,不再出现在 status domain list,也不再发巡检告警。\n` +
516
- `域名本身没动 —— NS 没改、DNS 没删、注册没退、CF zone 没动。要再接回来:clize domain import ${d}。`,
531
+ message: t `✓ ${d} removed from clize: identity / address records / health records cleared; it no longer appears in status or domain list and no longer alerts.
532
+ ` +
533
+ t `The domain itself is untouched — NS unchanged, DNS kept, registration kept, CF zone kept. To add it back: clize domain import ${d}.`,
517
534
  };
518
535
  }
519
536
  /** 从注册商拉取真实已注册域名列表(含到期时间,用于防过期巡检)。 */
@@ -530,10 +547,23 @@ export async function assetsHealth(ctx, opts = {}) {
530
547
  genAssetsHealth(ctx),
531
548
  domainHealthSummary(ctx),
532
549
  ]);
533
- return { ...overview, registered, gen, ...(health ? { health } : {}) };
550
+ // 覆盖口径:巡检账是全租户的,domainCount 在检出项目时是项目口径 —— 只有全租户视图下
551
+ // 「巡了几个 / 一共几个」才可比,对不上才解释(对得上时一个数字自明,不占 token)。
552
+ const scoped = Boolean(overview.spentScope);
553
+ const domainCount = Number(overview.domainCount ?? 0);
554
+ const checked = health ? Number(health.checkedCount ?? 0) : 0;
555
+ const health2 = health && !scoped && checked < domainCount
556
+ ? {
557
+ ...health,
558
+ checkedScope: t `${checked}/${domainCount} — the sweep runs every 30 minutes; newly added domains join the next round (nothing is skipped)`,
559
+ }
560
+ : health;
561
+ return { ...overview, registered, gen, ...(health2 ? { health: health2 } : {}) };
534
562
  }
535
563
  /** 巡检健康汇总:读 domain_health 账(平台 cron 每 30 分钟写),零探测零网络成本。
536
564
  * 正常态只回 checkedCount;有异常才展开 issues —— 与 configHealth 同哲学(高频响应省 token)。
565
+ * 巡检范围 = 全部纳管域(2026-09-01 起含平台 handle 与 pending;见 worker.sweepDomainHealth),
566
+ * 所以正常态 checkedCount 应当等于 domainCount;对不上由 assetsHealth 补一句 checkedScope。
537
567
  * 本地 File store 无巡检表 → undefined,字段整个不出现。 */
538
568
  async function domainHealthSummary(ctx) {
539
569
  if (!ctx.store.listDomainHealth)
@@ -1 +1 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/core/domains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/core/domains.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  // 在 worker 里(需要 exec.waitUntil / D1Store)。这样这部分可脱离 D1 单测。
6
6
  // ============================================================
7
7
  import { ClizeError } from "../lib/errors.js";
8
+ /** 一次事务性发信请求(worker 从 body 收,归一后交给发送)。 */
9
+ import { t } from "../i18n/t.js";
8
10
  const EMAIL_RE = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
9
11
  function asArray(v) {
10
12
  if (!v)
@@ -18,20 +20,20 @@ function asArray(v) {
18
20
  export function normalizeTransactional(input) {
19
21
  const from = (input.from || "").trim();
20
22
  if (!EMAIL_RE.test(from))
21
- throw new ClizeError("from 不是合法邮箱地址", 400);
23
+ throw new ClizeError(t("from is not a valid email address"), 400);
22
24
  const recipients = asArray(input.to).map((s) => s.toLowerCase());
23
25
  if (!recipients.length)
24
- throw new ClizeError("需至少一个 to 收件人", 400);
26
+ throw new ClizeError(t("At least one to recipient is required"), 400);
25
27
  const bad = recipients.find((r) => !EMAIL_RE.test(r));
26
28
  if (bad)
27
- throw new ClizeError(`收件人地址不合法:${bad}`, 400);
29
+ throw new ClizeError(t `Recipient address is not valid: ${bad}`, 400);
28
30
  if (recipients.length > 50)
29
- throw new ClizeError("单次 to 收件人不超过 50 (批量请分多次调用)", 400);
31
+ throw new ClizeError(t("At most 50 to recipients per call (split larger batches into several calls)"), 400);
30
32
  const subject = (input.subject || "").trim();
31
33
  if (!subject)
32
- throw new ClizeError(" subject", 400);
34
+ throw new ClizeError(t("subject required"), 400);
33
35
  if (!input.html && !input.text)
34
- throw new ClizeError("html text 至少提供一个", 400);
36
+ throw new ClizeError(t("Provide at least one of html or text"), 400);
35
37
  const listId = (input.list || "").trim().slice(0, 120);
36
38
  const msg = {
37
39
  from,
@@ -1 +1 @@
1
- {"version":3,"file":"email-tx.js","sourceRoot":"","sources":["../../src/core/email-tx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-tx.js","sourceRoot":"","sources":["../../src/core/email-tx.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,6CAA6C;AAC7C,2EAA2E;AAC3E,2DAA2D;AAC3D,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,0CAA0C;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAyBjC,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAE9C,SAAS,OAAO,CAAC,CAAgC;IAC/C,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC9D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,uCAAuC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAA,mCAAmC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,6EAA6E,CAAC,EAAE,GAAG,CAAC,CAAC;IACxI,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAkB;QACzB,IAAI;QACJ,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACxD,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS;QAC3C,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;KAC/F,CAAC;IACF,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,sBAAsB;AACtB,SAAS,aAAa,CAAC,KAAiB;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AACD,SAAS,aAAa,CAAC,CAAS;IAC9B,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,8BAA8B;AAC9B,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,OAAe;IACnE,OAAO,UAAU,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AASD,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,CAAe;IAClE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,KAAa;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAiB,CAAC;QACpF,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1E,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CACvC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE/F;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAkB,EAAE,QAAgB;IACpE,MAAM,OAAO,GAA2B;QACtC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QACtB,kBAAkB,EAAE,IAAI,QAAQ,GAAG;QACnC,uBAAuB,EAAE,4BAA4B;KACtD,CAAC;IACF,MAAM,GAAG,GAAkB,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;IAC/C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI;YACN,GAAG,CAAC,IAAI;gBACR,6IAA6I;gBAC7I,iDAAiD;gBACjD,YAAY,UAAU,CAAC,QAAQ,CAAC,oEAAoE;gBACpG,QAAQ,CAAC;IACb,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,uBAAuB,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { resolveZone } from "../lib/zone.js";
2
2
  import { assertDomainInProject } from "./projects.js";
3
3
  /** 免费 handle 根域(与 handle.ts 一致)。 */
4
+ import { t } from "../i18n/t.js";
4
5
  const HANDLE_ROOT = process.env.CLIZE_HANDLE_ROOT || "clize.app";
5
6
  /** 发件地址 → 它代表的「自然域」(resolveHostedSender 的逆运算,串台护栏按它查归属):
6
7
  * `<slug>@mail.<HANDLE_ROOT>` → `<slug>.<HANDLE_ROOT>`;`x@mail.<domain>` → `<domain>`;其余 → @ 后原样。 */
@@ -60,16 +61,16 @@ export async function setupEmail(ctx, domain) {
60
61
  });
61
62
  return {
62
63
  domain,
63
- inbound: "Cloudflare Email Routing 已启用(MX/SPF 已写入)",
64
+ inbound: t("Cloudflare Email Routing enabled (MX/SPF written)"),
64
65
  outbound: sending,
65
- note: "发信记录写入 DNS 后需等待验证;可稍后再次运行以触发验证。",
66
+ note: t("Sending records were written to DNS and await verification; run again later to trigger it."),
66
67
  };
67
68
  }
68
69
  /** 防重发窗口(分钟):窗口内同收件人 + 同主题视为疑似重试。 */
69
70
  const DUP_SEND_WINDOW_MIN = 10;
70
71
  export async function sendEmail(ctx, msg, opts) {
71
72
  if (!msg.text && !msg.html)
72
- throw new Error("text html 至少提供一个");
73
+ throw new Error(t("Provide at least one of text or html"));
73
74
  // 串台护栏:检出项目时,发件身份必须属于当前项目(防 agent 在 A 项目目录用 B 项目身份给客户发信)。
74
75
  const natural = senderNaturalDomain(msg.from || "");
75
76
  if (natural)
@@ -81,9 +82,9 @@ export async function sendEmail(ctx, msg, opts) {
81
82
  const cutoff = Date.now() - DUP_SEND_WINDOW_MIN * 60_000;
82
83
  const dup = (await ctx.store.listSent(ctx.tenantId)).find((s) => s.to === toStr && s.subject === msg.subject && Date.parse(s.ts) > cutoff);
83
84
  if (dup)
84
- throw new Error(`疑似重复发送:${DUP_SEND_WINDOW_MIN} 分钟内已向 ${toStr} 发过同主题邮件(${dup.ts})。` +
85
- `若上次发送报了错,多半已实际送达(clize email thread 可核实),别盲目重发;` +
86
- `确认要再发一封,加 --allow-duplicate。`);
85
+ throw new Error(t `Possible duplicate: a mail with the same subject was sent to ${toStr} within the last ${DUP_SEND_WINDOW_MIN} minutes (${dup.ts}).` +
86
+ t("If the previous send reported an error it was most likely delivered anyway (verify with clize email thread); do not resend blindly;") +
87
+ t("to really send another one, add --allow-duplicate."));
87
88
  }
88
89
  if (ctx.tenant.dryRun) {
89
90
  await ctx.store.appendAudit(ctx.tenantId, {
@@ -96,7 +97,7 @@ export async function sendEmail(ctx, msg, opts) {
96
97
  },
97
98
  dryRun: true,
98
99
  });
99
- return { dryRun: true, message: "演练模式:未真正发送。设 DRY_RUN=false 后执行。" };
100
+ return { dryRun: true, message: t("Rehearsal mode: nothing was sent. Set DRY_RUN=false to execute.") };
100
101
  }
101
102
  const res = await ctx.providers.emailOutbound().send(msg);
102
103
  await ctx.store.appendSent(ctx.tenantId, {
@@ -154,7 +155,7 @@ export function getMessage(ctx, domain, id) {
154
155
  export async function routeEmail(ctx, from, to) {
155
156
  const domain = from.split("@")[1];
156
157
  if (!domain)
157
- throw new Error(`无效地址:${from}(应形如 support@hello.clize.app)`);
158
+ throw new Error(t `Invalid address: ${from} (expected something like support@hello.clize.app)`);
158
159
  const zoneId = await resolveZone(ctx, domain);
159
160
  const result = await ctx.providers.emailInbound.addRoute({ zoneId, from, to });
160
161
  await ctx.store.appendAudit(ctx.tenantId, {
@@ -196,7 +197,7 @@ export async function emailThread(ctx, domain, contact) {
196
197
  return all;
197
198
  return {
198
199
  thread: all.slice(-THREAD_CAP), // 对话续上要的是最近的
199
- truncated: `仅最近 ${THREAD_CAP}/${all.length} 条;更早的按 id 单封看:clize email show ${domain} <id>`,
200
+ truncated: t `Only the latest ${THREAD_CAP}/${all.length}; read older ones by id with clize email show ${domain} <id>`,
200
201
  };
201
202
  }
202
203
  /** 配置某地址的入站 webhook(来信 POST 到 url)。重部署含 webhook 逻辑的 worker + 写 KV 配置。 */
@@ -204,13 +205,13 @@ export async function setEmailWebhook(ctx, address, url) {
204
205
  await setupInbox(ctx, address); // 确保(重)部署含 webhook 逻辑的 worker + 路由
205
206
  await ctx.providers.emailInbound.setWebhook(address, url);
206
207
  await ctx.store.appendAudit(ctx.tenantId, { action: "email_webhook", detail: { address, url } });
207
- return { address, webhook: url, message: `来信 ${address} POST 信封到 ${url}` };
208
+ return { address, webhook: url, message: t `Mail to ${address} will POST its envelope to ${url}` };
208
209
  }
209
210
  /** 开启 agent 自持收信:把发往 address 的邮件捕获到 agent 收件箱(Email Worker + KV),可选同时转发。 */
210
211
  export async function setupInbox(ctx, address, forwardTo) {
211
212
  const domain = address.split("@")[1];
212
213
  if (!domain)
213
- throw new Error(`无效地址:${address}(应形如 support@hello.clize.app)`);
214
+ throw new Error(t `Invalid address: ${address} (expected something like support@hello.clize.app)`);
214
215
  const zoneId = await resolveZone(ctx, domain);
215
216
  const result = await ctx.providers.emailInbound.setupInbox({ address, zoneId, forwardTo });
216
217
  await ctx.store.appendAudit(ctx.tenantId, {
@@ -219,7 +220,7 @@ export async function setupInbox(ctx, address, forwardTo) {
219
220
  });
220
221
  return {
221
222
  ...result,
222
- message: `已开启 agent 收信:发往 ${address} 的邮件将存入收件箱,用 \`clize email inbox ${domain}\` 读取${forwardTo ? `;同时转发到 ${forwardTo}` : ""}`,
223
+ message: t `Agent inbound enabled: mail to ${address} lands in the inbox; read it with \`clize email inbox ${domain}\`${forwardTo ? t `; also forwarded to ${forwardTo}` : ""}`,
223
224
  };
224
225
  }
225
226
  //# sourceMappingURL=email.js.map