@geoly-ai/social-hub-cli 0.3.19 → 0.3.20

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 (35) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cmd-manifest.json +4 -2
  3. package/dist/content-review.test.js +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +29 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/register-calendar-directives.d.ts +64 -0
  8. package/dist/register-calendar-directives.d.ts.map +1 -0
  9. package/dist/register-calendar-directives.js +135 -0
  10. package/dist/register-calendar-directives.js.map +1 -0
  11. package/dist/register-calendar-directives.test.d.ts +2 -0
  12. package/dist/register-calendar-directives.test.d.ts.map +1 -0
  13. package/dist/register-calendar-directives.test.js +127 -0
  14. package/dist/register-calendar-directives.test.js.map +1 -0
  15. package/package.json +2 -2
  16. package/skills/README.md +23 -22
  17. package/skills/manifest.json +6 -1
  18. package/skills/reddit-content-rewrite/SKILL.md +29 -0
  19. package/skills/reddit-content-writing/SKILL.md +53 -4
  20. package/skills/reddit-delivery-check/SKILL.md +38 -6
  21. package/skills/reddit-matrix.lock.json +6 -6
  22. package/skills/reddit-phase-brief/SKILL.md +39 -4
  23. package/skills/reddit-phase-brief/references/phase4-brief-workflow.md +43 -3
  24. package/skills/reddit-strategy-shared/references/content-diversity-contract.md +7 -2
  25. package/skills/reddit-strategy-shared/references/content-review-gate.md +48 -1
  26. package/skills/reddit-strategy-shared/references/handoff-schemas.md +72 -2
  27. package/skills/reddit-strategy-shared/references/native-copy-profile.md +207 -0
  28. package/skills/reddit-strategy-shared/references/persona-card-contract.md +210 -0
  29. package/skills/reddit-strategy-shared/references/version-manifest.md +60 -0
  30. package/skills/reddit-subreddit-compliance/SKILL.md +28 -1
  31. package/skills/social-hub-calendar-directives/SKILL.md +548 -0
  32. package/skills/social-hub-calendar-jobs/SKILL.md +10 -0
  33. package/skills/social-hub-cli/SKILL.md +2 -0
  34. package/skills/social-hub-notifications/SKILL.md +7 -0
  35. package/skills/social-hub-publishing/SKILL.md +5 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,21 @@ All notable changes to `@geoly-ai/social-hub-cli` are documented in this file.
4
4
 
5
5
  Release workflow: `pnpm release:cli` → `pnpm publish:cli`.
6
6
 
7
+ ## [0.3.20] - 2026-08-18
8
+
9
+ ### Added
10
+
11
+ - 发布日历指令端到端接线(Block 5) + 封死 D1 旁路
12
+ - 发布日历指令的 SDK/CLI/skills 交付面(Block 6)
13
+
14
+ ### Changed
15
+
16
+ - response mock 的 rubricVersion 跟到 content-review.v5
17
+
18
+ ### Documentation
19
+
20
+ - 写作侧 matrix skill 对齐冻结契约(块 2d)+ 删掉 WeaklyVerified
21
+
7
22
  ## [0.3.19] - 2026-08-14
8
23
 
9
24
  ### Added
@@ -1,6 +1,6 @@
1
1
  {
2
- "generatedAt": "2026-08-14T09:17:16.590Z",
3
- "cliVersion": "0.3.19",
2
+ "generatedAt": "2026-08-18T09:08:50.530Z",
3
+ "cliVersion": "0.3.20",
4
4
  "commands": [
5
5
  "accounts",
6
6
  "accounts brand-bindings",
@@ -111,6 +111,8 @@
111
111
  "calendar list",
112
112
  "calendar list-full",
113
113
  "calendar patch",
114
+ "calendar preflight",
115
+ "calendar set-delivery-mode",
114
116
  "campaigns",
115
117
  "campaigns accounts",
116
118
  "campaigns accounts assign",
@@ -73,7 +73,7 @@ const okResult = {
73
73
  optimized: null,
74
74
  rationale: null,
75
75
  reviewModel: "m",
76
- rubricVersion: "content-review.v4",
76
+ rubricVersion: "content-review.v5",
77
77
  thresholdSnapshot: {},
78
78
  latencyMs: 12,
79
79
  degradedReason: null,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuDpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA8+E9B,8DAA8D;AAC9D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,IAAI,CAOf;AAg+BD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAQF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,GACA,OAAO,CAAC;IAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAkJnE;AAyqBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE,GAAG,MAAM,CAiBT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAyCpD;AAgyDD,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA2gF9B,8DAA8D;AAC9D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,IAAI,CAOf;AAg+BD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAQF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,GACA,OAAO,CAAC;IAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAkJnE;AAyqBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE,GAAG,MAAM,CAiBT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAyCpD;AAgyDD,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { registerSubredditStyleCommands } from "./register-subreddit-style.js";
8
8
  import { registerContentClassificationCommands } from "./register-content-classification.js";
9
9
  import { registerNotifyCommands } from "./register-notify.js";
10
10
  import { registerFeishuIdentityCommands } from "./register-feishu-identities.js";
11
+ import { registerCalendarDirectiveCommands, calendarPatchNeedsGate, deliveryModeChangeRequiresApply, } from "./register-calendar-directives.js";
11
12
  import { assertApplyOrDryRun } from "./dry-run.js";
12
13
  import { withPermissionGate } from "./permission-runner.js";
13
14
  import { registerBatchAndExport } from "./register-batch.js";
@@ -284,6 +285,7 @@ dashboard
284
285
  });
285
286
  // --- calendar ---
286
287
  const calendar = program.command("calendar").description("发布日历条目");
288
+ registerCalendarDirectiveCommands(calendar);
287
289
  calendar
288
290
  .command("list")
289
291
  .description("GET /calendar-entries")
@@ -311,6 +313,8 @@ calendar
311
313
  .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
312
314
  .requiredOption("-e, --entry <entryId>", "Calendar entry UUID")
313
315
  .requiredOption("--body <json>", '例如 {"status":"succeeded","permalink":"https://www.reddit.com/..."}')
316
+ .option("--dry-run", "预览写入,不调用 API", false)
317
+ .option("--apply", "执行写入(仅 deliveryMode 变更必填)", false)
314
318
  .action(async (opts) => {
315
319
  let body;
316
320
  try {
@@ -320,7 +324,31 @@ calendar
320
324
  console.error("Invalid --body JSON");
321
325
  process.exit(1);
322
326
  }
323
- const res = await requireClient().updateCalendarEntry(resolveTeamId(opts.team), opts.entry, body);
327
+ const teamId = resolveTeamId(opts.team);
328
+ // 两道门,判据不同,不能合成一条:
329
+ //
330
+ // `--dry-run` **对任何 body 都必须生效** —— 全局 flag 契约是「预览写入,不调用
331
+ // API」(docs/command-governance.md)。只在 deliveryMode 分支上认它,就会出现
332
+ // 「我明明加了 --dry-run,它却真的把状态改了」这种最不该有的意外写入。
333
+ //
334
+ // `--apply` **只在 body 含 `deliveryMode` 时必填**。它是防重复发帖的唯一闸门
335
+ // (方案 D1):改它会让服务端在同一事务里撤销/创建内部 publish_post job 并
336
+ // append 指令。`calendar set-delivery-mode` 已经带这道门,raw patch 必须同样
337
+ // 挡住,否则那道门只是装饰。其余字段(status/permalink/…)不加必填门,既有
338
+ // 自动化行为完全不变。
339
+ if (calendarPatchNeedsGate(body, opts) &&
340
+ !assertApplyOrDryRun(opts, {
341
+ command: deliveryModeChangeRequiresApply(body)
342
+ ? "calendar patch (deliveryMode)"
343
+ : "calendar patch",
344
+ danger: deliveryModeChangeRequiresApply(body)
345
+ ? "切换发布主体:转 external_agent 会撤销内部 publish_post job 并发 upsert 指令;转 hub_managed 会发 cancel 指令并建内部 job。改错 = 双发或谁都不发。"
346
+ : "更新日历条目",
347
+ summary: { teamId, calendarEntryId: opts.entry, body },
348
+ })) {
349
+ return;
350
+ }
351
+ const res = await requireClient().updateCalendarEntry(teamId, opts.entry, body);
324
352
  console.log(JSON.stringify(res, null, 2));
325
353
  });
326
354
  // --- reddit ---