@geoly-ai/social-hub-cli 0.3.8 → 0.3.10

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 +30 -0
  2. package/dist/cmd-manifest.json +18 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +42 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.test.js +35 -0
  7. package/dist/index.test.js.map +1 -1
  8. package/dist/permissions-gates-admin.d.ts.map +1 -1
  9. package/dist/permissions-gates-admin.js +8 -0
  10. package/dist/permissions-gates-admin.js.map +1 -1
  11. package/dist/permissions-gates-admin.test.js +10 -0
  12. package/dist/permissions-gates-admin.test.js.map +1 -1
  13. package/dist/permissions-gates-notify.d.ts.map +1 -1
  14. package/dist/permissions-gates-notify.js +81 -1
  15. package/dist/permissions-gates-notify.js.map +1 -1
  16. package/dist/permissions-gates-notify.test.js +10 -3
  17. package/dist/permissions-gates-notify.test.js.map +1 -1
  18. package/dist/permissions-revisions-cursor.test.d.ts +2 -0
  19. package/dist/permissions-revisions-cursor.test.d.ts.map +1 -0
  20. package/dist/permissions-revisions-cursor.test.js +92 -0
  21. package/dist/permissions-revisions-cursor.test.js.map +1 -0
  22. package/dist/register-notify.d.ts +38 -0
  23. package/dist/register-notify.d.ts.map +1 -1
  24. package/dist/register-notify.js +324 -9
  25. package/dist/register-notify.js.map +1 -1
  26. package/dist/register-notify.test.js +40 -1
  27. package/dist/register-notify.test.js.map +1 -1
  28. package/package.json +3 -3
  29. package/skills/manifest.json +1 -1
  30. package/skills/reddit-matrix.lock.json +14 -14
  31. package/skills/reddit-voc-volume/services/firecrawl/examples/o1_web_crawler/o1_web_crawler.py +152 -152
  32. package/skills/social-hub-admin/SKILL.md +44 -1
  33. package/skills/social-hub-notifications/SKILL.md +207 -14
  34. package/skills/social-hub-openclaw-context/SKILL.md +10 -0
  35. package/skills/social-hub-subreddit-pools/SKILL.md +51 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,36 @@ 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.10] - 2026-08-04
8
+
9
+ 游标改十进制字符串:permissions revisions 的 --before-\*-revision-no 不再 Number() 化(修精度失真)
10
+
11
+ ### Fixed
12
+
13
+ - 权限轨迹 revisionNo 改十进制字符串(bigint 不再失真)
14
+
15
+ ## [0.3.9] - 2026-08-03
16
+
17
+ ### Added
18
+
19
+ - `permissions revisions` —— 权限 override 变更轨迹(gate 是 `permissionMatrix:**update**` 而非
20
+ read;双 keyset 游标原样回传;口径是 override 轨迹而非 effective 权限轨迹)
21
+ - `notify events list|get` —— 事件运维查看面(`--before-seq` / `--order`,与 pull 的消费语义分离)
22
+ - `notify schedules summary|list|get` —— 节点排期可观测面(强制有界时间窗,默认 30 天 / 上限 90 天)
23
+ - `notify schedules purge-status` —— 保留期 GC 的运行状态
24
+ - `notify source-configs activate|create` 增加 `--expect-active <uuid|none>` /
25
+ `--expect-active-version`(激活 CAS;**缺省 = 不启用**,沿用历史 last-writer-wins)
26
+ - `notify templates list|versions|get|create|activate|set-auto-derivation` ——
27
+ 系统级 source 模板(服务端硬 admin 门 + 仅不受限的交互式登录)
28
+ - `pools catalog-list` / `tier-rules-list` 增加 `--aggregate-visible-teams`
29
+ (**跨可见团队的署名聚合视图**,不是无条件全表)
30
+ - `reddit team-buckets` —— 列出外部/未配置桶
31
+
32
+ ### Changed
33
+
34
+ - skills 自动同步默认开启(opt-out:`SOCIAL_HUB_NO_SKILLS_AUTO_UPDATE=1`)
35
+ - `social-hub-admin` / `social-hub-notifications` 的 `metadata.cliVersion` 提到 `>=0.3.9`
36
+
7
37
  ## [0.3.8] - 2026-08-03
8
38
 
9
39
  ### Added
@@ -1,6 +1,6 @@
1
1
  {
2
- "generatedAt": "2026-08-03T07:56:03.615Z",
3
- "cliVersion": "0.3.8",
2
+ "generatedAt": "2026-08-04T06:29:13.978Z",
3
+ "cliVersion": "0.3.10",
4
4
  "commands": [
5
5
  "accounts",
6
6
  "accounts brand-bindings",
@@ -298,7 +298,15 @@
298
298
  "notification-channels update",
299
299
  "notify",
300
300
  "notify ack",
301
+ "notify events",
302
+ "notify events get",
303
+ "notify events list",
301
304
  "notify pull",
305
+ "notify schedules",
306
+ "notify schedules get",
307
+ "notify schedules list",
308
+ "notify schedules purge-status",
309
+ "notify schedules summary",
302
310
  "notify source-configs",
303
311
  "notify source-configs activate",
304
312
  "notify source-configs create",
@@ -315,6 +323,13 @@
315
323
  "notify subscriptions reset",
316
324
  "notify subscriptions resume",
317
325
  "notify subscriptions update",
326
+ "notify templates",
327
+ "notify templates activate",
328
+ "notify templates create",
329
+ "notify templates get",
330
+ "notify templates list",
331
+ "notify templates set-auto-derivation",
332
+ "notify templates versions",
318
333
  "openclaw-ingest",
319
334
  "openclaw-ingest runs",
320
335
  "openclaw-ingest status",
@@ -328,6 +343,7 @@
328
343
  "permissions",
329
344
  "permissions explain",
330
345
  "permissions matrix",
346
+ "permissions revisions",
331
347
  "permissions-update",
332
348
  "personas",
333
349
  "personas pools-get",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAs5E9B,8DAA8D;AAC9D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,IAAI,CAOf;AA2/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;AA+1ED,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;AAgDpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAk9E9B,8DAA8D;AAC9D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,IAAI,CAOf;AAqgCD,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;AA+1ED,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -992,6 +992,44 @@ permissionsCmd
992
992
  const res = await requireClient().getPermissionsMatrix(resolveTeamId(opts.team));
993
993
  console.log(JSON.stringify(res, null, 2));
994
994
  });
995
+ permissionsCmd
996
+ .command("revisions")
997
+ .description("GET /permissions-matrix/revisions(权限 override 变更轨迹;gate=permissionMatrix:update,不是 read)")
998
+ .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
999
+ .option("--kind <kind>", "permission|field(省略=两张轨迹都查)")
1000
+ .option("--role <role>", "role filter")
1001
+ .option("--resource <resource>", "resource filter")
1002
+ .option("--action <action>", "action filter(仅 permission 轨迹;与 --field 互斥)")
1003
+ .option("--field <field>", "field filter(仅 field 轨迹;与 --action 互斥)")
1004
+ .option("--before-permission-revision-no <n>", "keyset 游标:上一页的 nextPermissionRevisionNo,原样回传")
1005
+ .option("--before-field-revision-no <n>", "keyset 游标:上一页的 nextFieldRevisionNo,原样回传")
1006
+ .option("-n, --limit <n>", "limit(1–500,服务端默认 50)")
1007
+ .action(async (opts) => {
1008
+ await withPermissionGate({
1009
+ command: "permissions revisions",
1010
+ resource: "permissionMatrix",
1011
+ action: "update",
1012
+ teamId: resolveTeamId(opts.team),
1013
+ }, async () => {
1014
+ const res = await requireClient().listPermissionsMatrixRevisions(resolveTeamId(opts.team), {
1015
+ kind: opts.kind,
1016
+ role: opts.role,
1017
+ resource: opts.resource,
1018
+ action: opts.action,
1019
+ field: opts.field,
1020
+ // 🔴 游标**原样透传字符串**,以前这里是 `Number(...)` —— revision_no 是
1021
+ // int8(63 bit),Number 会在跨过 2^53 后静默失真,把游标指到错误的位置,
1022
+ // 于是「翻页」悄悄变成「跳过或重复一段审计轨迹」。commander 给的本来就是
1023
+ // 字符串,不要动它。(`limit` 保持 Number:它是 1–500 的小整数。)
1024
+ beforePermissionRevisionNo: opts.beforePermissionRevisionNo,
1025
+ beforeFieldRevisionNo: opts.beforeFieldRevisionNo,
1026
+ limit: opts.limit === undefined ? undefined : Number(opts.limit),
1027
+ });
1028
+ // stdout 保持**纯 JSON**(要能直接 `| jq`)。口径提醒走响应体自带的 `note`
1029
+ // 与 --help,不在这里往 stdout 里掺文字。
1030
+ console.log(JSON.stringify(res, null, 2));
1031
+ });
1032
+ });
995
1033
  registerPermissionsExplain(permissionsCmd);
996
1034
  const graph = program.command("graph").description("账号图谱");
997
1035
  graph
@@ -2204,6 +2242,7 @@ pools
2204
2242
  .option("--status <s>", "active|paused|archived")
2205
2243
  .option("--industry-key <key>", "industryKey filter")
2206
2244
  .option("--pool-kind <kind>", "pet|common|industry|brand|other")
2245
+ .option("--aggregate-visible-teams", "跨可见团队的归属署名视图(catalog 是系统级共享数据,行上的 teamId 只是历史署名);查重前必开,否则漏掉别的团队署名的行")
2207
2246
  .option("-n, --limit <n>", "limit", "50")
2208
2247
  .option("--offset <n>", "offset", "0")
2209
2248
  .action(async (opts) => {
@@ -2211,6 +2250,7 @@ pools
2211
2250
  status: opts.status,
2212
2251
  industryKey: opts.industryKey,
2213
2252
  poolKind: opts.poolKind,
2253
+ aggregateVisibleTeams: opts.aggregateVisibleTeams ? true : undefined,
2214
2254
  limit: Number(opts.limit),
2215
2255
  offset: Number(opts.offset),
2216
2256
  });
@@ -2299,6 +2339,7 @@ pools
2299
2339
  .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
2300
2340
  .option("--tier <tier>", "S0|S1|S2|S3")
2301
2341
  .option("--enabled <bool>", "true|false")
2342
+ .option("--aggregate-visible-teams", "跨可见团队的归属署名视图(tier-rules 是系统级共享数据,subreddit 全局唯一);查重前必开")
2302
2343
  .option("-n, --limit <n>", "limit", "50")
2303
2344
  .option("--offset <n>", "offset", "0")
2304
2345
  .action(async (opts) => {
@@ -2307,6 +2348,7 @@ pools
2307
2348
  enabled: opts.enabled === undefined
2308
2349
  ? undefined
2309
2350
  : opts.enabled === "true" || opts.enabled === "1",
2351
+ aggregateVisibleTeams: opts.aggregateVisibleTeams ? true : undefined,
2310
2352
  limit: Number(opts.limit),
2311
2353
  offset: Number(opts.offset),
2312
2354
  });