@geoly-ai/social-hub-cli 0.3.4 → 0.3.5
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.
- package/CHANGELOG.md +10 -0
- package/dist/cmd-manifest.json +22 -2
- package/dist/cmd-manifest.test.js +28 -0
- package/dist/cmd-manifest.test.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions-gates-notify.d.ts +26 -0
- package/dist/permissions-gates-notify.d.ts.map +1 -0
- package/dist/permissions-gates-notify.js +118 -0
- package/dist/permissions-gates-notify.js.map +1 -0
- package/dist/permissions-gates-notify.test.d.ts +2 -0
- package/dist/permissions-gates-notify.test.d.ts.map +1 -0
- package/dist/permissions-gates-notify.test.js +107 -0
- package/dist/permissions-gates-notify.test.js.map +1 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +2 -0
- package/dist/permissions.js.map +1 -1
- package/dist/register-extensions.d.ts.map +1 -1
- package/dist/register-extensions.js +5 -9
- package/dist/register-extensions.js.map +1 -1
- package/dist/register-notify.d.ts +172 -0
- package/dist/register-notify.d.ts.map +1 -0
- package/dist/register-notify.js +1148 -0
- package/dist/register-notify.js.map +1 -0
- package/dist/register-notify.test.d.ts +2 -0
- package/dist/register-notify.test.d.ts.map +1 -0
- package/dist/register-notify.test.js +309 -0
- package/dist/register-notify.test.js.map +1 -0
- package/package.json +3 -3
- package/skills/README.md +1 -0
- package/skills/manifest.json +6 -1
- package/skills/social-hub-notifications/SKILL.md +351 -0
- package/skills/social-hub-posts/SKILL.md +36 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ 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.5] - 2026-08-03
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- 事件订阅通知能力 —— 独立事件流 + 广播游标订阅 + long-poll
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- 补 compose env 白名单 + skill 首次启用前置说明
|
|
16
|
+
|
|
7
17
|
## [0.3.4] - 2026-07-31
|
|
8
18
|
|
|
9
19
|
### Added
|
package/dist/cmd-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
3
|
-
"cliVersion": "0.3.
|
|
2
|
+
"generatedAt": "2026-08-03T02:45:41.626Z",
|
|
3
|
+
"cliVersion": "0.3.5",
|
|
4
4
|
"commands": [
|
|
5
5
|
"accounts",
|
|
6
6
|
"accounts brand-bindings",
|
|
@@ -296,6 +296,25 @@
|
|
|
296
296
|
"notification-channels list",
|
|
297
297
|
"notification-channels test",
|
|
298
298
|
"notification-channels update",
|
|
299
|
+
"notify",
|
|
300
|
+
"notify ack",
|
|
301
|
+
"notify pull",
|
|
302
|
+
"notify source-configs",
|
|
303
|
+
"notify source-configs activate",
|
|
304
|
+
"notify source-configs create",
|
|
305
|
+
"notify source-configs get",
|
|
306
|
+
"notify source-configs list",
|
|
307
|
+
"notify source-configs set-enabled",
|
|
308
|
+
"notify source-configs sources",
|
|
309
|
+
"notify subscriptions",
|
|
310
|
+
"notify subscriptions create",
|
|
311
|
+
"notify subscriptions delete",
|
|
312
|
+
"notify subscriptions get",
|
|
313
|
+
"notify subscriptions list",
|
|
314
|
+
"notify subscriptions pause",
|
|
315
|
+
"notify subscriptions reset",
|
|
316
|
+
"notify subscriptions resume",
|
|
317
|
+
"notify subscriptions update",
|
|
299
318
|
"openclaw-ingest",
|
|
300
319
|
"openclaw-ingest runs",
|
|
301
320
|
"openclaw-ingest status",
|
|
@@ -356,6 +375,7 @@
|
|
|
356
375
|
"reddit refresh-progress",
|
|
357
376
|
"reddit refresh-status",
|
|
358
377
|
"reddit stats",
|
|
378
|
+
"reddit team-buckets",
|
|
359
379
|
"reddit update",
|
|
360
380
|
"reports",
|
|
361
381
|
"reports create",
|
|
@@ -18,6 +18,8 @@ describe("cmd-manifest", () => {
|
|
|
18
18
|
expect(paths).toContain("events append");
|
|
19
19
|
expect(paths).toContain("accounts status-snapshots create");
|
|
20
20
|
expect(paths).toContain("reddit batch-upsert");
|
|
21
|
+
// 外部 agent 回填外部来源帖的入口:桶 UUID 只能从这里拿(桶不在 teams 列表里)。
|
|
22
|
+
expect(paths).toContain("reddit team-buckets");
|
|
21
23
|
expect(paths).toContain("compliance sanctions-create");
|
|
22
24
|
expect(paths).toContain("compliance sanctions-update");
|
|
23
25
|
expect(paths).toContain("compliance sanctions-delete");
|
|
@@ -27,6 +29,32 @@ describe("cmd-manifest", () => {
|
|
|
27
29
|
expect(paths).toContain("style-profiles active");
|
|
28
30
|
expect(paths).toContain("style-profiles approve");
|
|
29
31
|
expect(paths).toContain("subreddit-annotations upsert");
|
|
32
|
+
// 事件订阅通知:agent 的消费面(pull/ack 是两条独立命令 —— 本期不提供 --auto-ack)。
|
|
33
|
+
expect(paths).toContain("notify subscriptions create");
|
|
34
|
+
expect(paths).toContain("notify subscriptions list");
|
|
35
|
+
expect(paths).toContain("notify subscriptions get");
|
|
36
|
+
expect(paths).toContain("notify subscriptions update");
|
|
37
|
+
expect(paths).toContain("notify subscriptions pause");
|
|
38
|
+
expect(paths).toContain("notify subscriptions resume");
|
|
39
|
+
expect(paths).toContain("notify subscriptions delete");
|
|
40
|
+
expect(paths).toContain("notify subscriptions reset");
|
|
41
|
+
expect(paths).toContain("notify pull");
|
|
42
|
+
expect(paths).toContain("notify ack");
|
|
43
|
+
expect(paths).toContain("notify source-configs sources");
|
|
44
|
+
expect(paths).toContain("notify source-configs list");
|
|
45
|
+
expect(paths).toContain("notify source-configs get");
|
|
46
|
+
expect(paths).toContain("notify source-configs create");
|
|
47
|
+
expect(paths).toContain("notify source-configs activate");
|
|
48
|
+
expect(paths).toContain("notify source-configs set-enabled");
|
|
49
|
+
});
|
|
50
|
+
it("does not expose --auto-ack on notify pull (Phase 1 安全约定)", () => {
|
|
51
|
+
const notify = program.commands.find((c) => c.name() === "notify");
|
|
52
|
+
const pull = notify?.commands.find((c) => c.name() === "pull");
|
|
53
|
+
const flags = (pull?.options ?? []).map((o) => o.long);
|
|
54
|
+
expect(flags).toContain("--receipt-file");
|
|
55
|
+
expect(flags).toContain("--follow");
|
|
56
|
+
// CLI 写完 stdout 不代表下游 agent 已完成截图/发飞书;自动 ack 会丢事件。
|
|
57
|
+
expect(flags).not.toContain("--auto-ack");
|
|
30
58
|
});
|
|
31
59
|
it("buildCmdManifest includes all registered leaf paths", () => {
|
|
32
60
|
const manifest = buildCmdManifest(program);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-manifest.test.js","sourceRoot":"","sources":["../src/cmd-manifest.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEJ,IAAI,OAAwD,CAAC;AAE7D,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd-manifest.test.js","sourceRoot":"","sources":["../src/cmd-manifest.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,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;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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { registerAccountsExtensions, registerAuthAndConfig, registerAuthzEvaluat
|
|
|
6
6
|
import { registerAdminCommands } from "./register-admin.js";
|
|
7
7
|
import { registerSubredditStyleCommands } from "./register-subreddit-style.js";
|
|
8
8
|
import { registerContentClassificationCommands } from "./register-content-classification.js";
|
|
9
|
+
import { registerNotifyCommands } from "./register-notify.js";
|
|
9
10
|
import { assertApplyOrDryRun } from "./dry-run.js";
|
|
10
11
|
import { withPermissionGate } from "./permission-runner.js";
|
|
11
12
|
import { registerBatchAndExport } from "./register-batch.js";
|
|
@@ -33,6 +34,7 @@ registerAgentContext(program);
|
|
|
33
34
|
registerAdminCommands(program);
|
|
34
35
|
registerSubredditStyleCommands(program);
|
|
35
36
|
registerContentClassificationCommands(program);
|
|
37
|
+
registerNotifyCommands(program);
|
|
36
38
|
registerBatchAndExport(program);
|
|
37
39
|
program
|
|
38
40
|
.command("health")
|
|
@@ -357,6 +359,27 @@ reddit
|
|
|
357
359
|
}, { fetchAll: Boolean(opts.all) });
|
|
358
360
|
console.log(JSON.stringify(res, null, 2));
|
|
359
361
|
});
|
|
362
|
+
reddit
|
|
363
|
+
.command("team-buckets")
|
|
364
|
+
.description("GET /v1/system/reddit-post-team-buckets(归属桶:未配置/外部)。外部来源帖回填前先用它拿桶 UUID")
|
|
365
|
+
.option("--slug <slug>", "只输出该 slug 的桶(便于脚本精确取一个)")
|
|
366
|
+
.option("--id-only", "只输出 UUID(每行一个),便于 shell 变量赋值")
|
|
367
|
+
.action(async (opts) => {
|
|
368
|
+
const res = await requireClient().listRedditPostTeamBuckets();
|
|
369
|
+
const items = opts.slug
|
|
370
|
+
? res.items.filter((item) => item.slug === opts.slug)
|
|
371
|
+
: res.items;
|
|
372
|
+
if (opts.slug && items.length === 0) {
|
|
373
|
+
console.error(`no team bucket with slug=${opts.slug}(可先不带 --slug 列出全部)`);
|
|
374
|
+
process.exit(1);
|
|
375
|
+
}
|
|
376
|
+
if (opts.idOnly) {
|
|
377
|
+
for (const item of items)
|
|
378
|
+
console.log(item.id);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
console.log(JSON.stringify({ items }, null, 2));
|
|
382
|
+
});
|
|
360
383
|
reddit
|
|
361
384
|
.command("create-snapshot")
|
|
362
385
|
.description("POST /reddit-post-snapshots(手工补录)")
|