@geoly-ai/social-hub-cli 0.3.4 → 0.3.6

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 (48) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cmd-manifest.json +22 -2
  3. package/dist/cmd-manifest.test.js +28 -0
  4. package/dist/cmd-manifest.test.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +23 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/permissions-gates-notify.d.ts +26 -0
  9. package/dist/permissions-gates-notify.d.ts.map +1 -0
  10. package/dist/permissions-gates-notify.js +118 -0
  11. package/dist/permissions-gates-notify.js.map +1 -0
  12. package/dist/permissions-gates-notify.test.d.ts +2 -0
  13. package/dist/permissions-gates-notify.test.d.ts.map +1 -0
  14. package/dist/permissions-gates-notify.test.js +107 -0
  15. package/dist/permissions-gates-notify.test.js.map +1 -0
  16. package/dist/permissions.d.ts.map +1 -1
  17. package/dist/permissions.js +2 -0
  18. package/dist/permissions.js.map +1 -1
  19. package/dist/postinstall.js +1 -1
  20. package/dist/postinstall.js.map +1 -1
  21. package/dist/register-extensions.d.ts.map +1 -1
  22. package/dist/register-extensions.js +5 -9
  23. package/dist/register-extensions.js.map +1 -1
  24. package/dist/register-notify.d.ts +172 -0
  25. package/dist/register-notify.d.ts.map +1 -0
  26. package/dist/register-notify.js +1148 -0
  27. package/dist/register-notify.js.map +1 -0
  28. package/dist/register-notify.test.d.ts +2 -0
  29. package/dist/register-notify.test.d.ts.map +1 -0
  30. package/dist/register-notify.test.js +309 -0
  31. package/dist/register-notify.test.js.map +1 -0
  32. package/dist/skill-update-check.d.ts +15 -0
  33. package/dist/skill-update-check.d.ts.map +1 -1
  34. package/dist/skill-update-check.js +22 -3
  35. package/dist/skill-update-check.js.map +1 -1
  36. package/dist/skill-update-check.test.js +19 -6
  37. package/dist/skill-update-check.test.js.map +1 -1
  38. package/package.json +3 -3
  39. package/skills/README.md +10 -7
  40. package/skills/manifest.json +6 -1
  41. package/skills/social-hub-cli/SKILL.md +3 -2
  42. package/skills/social-hub-notifications/SKILL.md +351 -0
  43. package/skills/social-hub-posts/SKILL.md +36 -0
  44. package/skills/social-hub-shared/SKILL.md +9 -9
  45. package/dist/register-subreddit-post-style.d.ts +0 -8
  46. package/dist/register-subreddit-post-style.d.ts.map +0 -1
  47. package/dist/register-subreddit-post-style.js +0 -161
  48. package/dist/register-subreddit-post-style.js.map +0 -1
@@ -1,161 +0,0 @@
1
- import { hubRequest, resolveTeamId } from "./client.js";
2
- import { assertApplyOrDryRun } from "./dry-run.js";
3
- import { printResult, withCliErrorBoundary } from "./output.js";
4
- import { withPermissionGates } from "./permission-runner.js";
5
- /**
6
- * 板块运营数据 Phase 1 —— 热帖风格标注(subreddit_post_style_labels)CLI 读 + 单人复核。
7
- * SDK 未覆盖(同 subreddit-style/annotations 域约定,HTTP 走 hubRequest)。复核 user-only、
8
- * 单人(非四眼);accept 可修正 primary/secondary/other,写一条 team 级 human 行(不改 LLM 行)。
9
- */
10
- export function registerSubredditPostStyleCommands(program) {
11
- const group = program
12
- .command("subreddit-post-styles")
13
- .description("Reddit 热帖风格标注(风格标签底座 Phase 1;分析数据,非发布 gate)");
14
- group
15
- .command("list")
16
- .description("GET /v1/teams/:teamId/subreddit-post-styles(本团队行+全局行;teamId=null 为全局)")
17
- .requiredOption("--subreddit <name>", "板块名")
18
- .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
19
- .option("--taxonomy <v>", "taxonomyVersion 过滤")
20
- .option("--source <s>", "llm | human")
21
- .option("--review-status <s>", "proposed | accepted | rejected")
22
- .option("--no-global", "只看本团队行(排除全局)")
23
- .option("-n, --limit <n>", "limit", "50")
24
- .option("--offset <n>", "offset", "0")
25
- .action(async (opts) => {
26
- await withCliErrorBoundary(async () => {
27
- const teamId = resolveTeamId(opts.team);
28
- await withPermissionGates({
29
- command: "subreddit-post-styles list",
30
- gates: [{ resource: "subredditPostAnnotation", action: "read" }],
31
- teamId,
32
- }, async () => {
33
- const params = new URLSearchParams();
34
- params.set("subreddit", opts.subreddit);
35
- if (opts.taxonomy)
36
- params.set("taxonomyVersion", opts.taxonomy);
37
- if (opts.source)
38
- params.set("source", opts.source);
39
- if (opts.reviewStatus)
40
- params.set("reviewStatus", opts.reviewStatus);
41
- if (opts.global === false)
42
- params.set("includeGlobal", "false");
43
- params.set("limit", String(opts.limit));
44
- params.set("offset", String(opts.offset));
45
- printResult(await hubRequest(`/v1/teams/${encodeURIComponent(teamId)}/subreddit-post-styles?${params.toString()}`));
46
- });
47
- });
48
- });
49
- group
50
- .command("summary")
51
- .description("GET .../subreddit-post-styles/summary — 风格分布 + 覆盖率 + 表现关联(posted_at 窗口;human>llm、team>global)")
52
- .requiredOption("--subreddit <name>", "板块名")
53
- .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
54
- .option("--taxonomy <v>", "taxonomyVersion 过滤")
55
- .option("--since <iso>", "posted_at 窗口起(ISO)")
56
- .option("--until <iso>", "posted_at 窗口止(ISO)")
57
- .option("--no-global", "只看本团队行(排除全局)")
58
- .action(async (opts) => {
59
- await withCliErrorBoundary(async () => {
60
- const teamId = resolveTeamId(opts.team);
61
- await withPermissionGates({
62
- command: "subreddit-post-styles summary",
63
- gates: [{ resource: "subredditPostAnnotation", action: "read" }],
64
- teamId,
65
- }, async () => {
66
- const params = new URLSearchParams();
67
- params.set("subreddit", opts.subreddit);
68
- if (opts.taxonomy)
69
- params.set("taxonomyVersion", opts.taxonomy);
70
- if (opts.since)
71
- params.set("since", opts.since);
72
- if (opts.until)
73
- params.set("until", opts.until);
74
- if (opts.global === false)
75
- params.set("includeGlobal", "false");
76
- printResult(await hubRequest(`/v1/teams/${encodeURIComponent(teamId)}/subreddit-post-styles/summary?${params.toString()}`));
77
- });
78
- });
79
- });
80
- group
81
- .command("accept")
82
- .description("POST .../subreddit-post-styles/accept — 单人接受一条 LLM proposed 标签(写 team 级 human accepted 行;可修正)")
83
- .requiredOption("--label-id <uuid>", "被接受的 LLM proposed 标签 id")
84
- .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
85
- .option("--primary-style <s>", "修正主风格(省略则原样采纳)")
86
- .option("--secondary-styles <csv>", "修正副风格(逗号分隔,≤3)")
87
- .option("--other-label <text>", "primary=other 时的自由标签")
88
- .option("--note <text>", "备注(≤2000)")
89
- .option("--dry-run", "预览", false)
90
- .option("--apply", "执行写入", false)
91
- .action(async (opts) => {
92
- await withCliErrorBoundary(async () => {
93
- const teamId = resolveTeamId(opts.team);
94
- const body = { labelId: opts.labelId };
95
- if (opts.primaryStyle)
96
- body.primaryStyle = opts.primaryStyle;
97
- if (opts.secondaryStyles)
98
- body.secondaryStyles = String(opts.secondaryStyles)
99
- .split(",")
100
- .map((s) => s.trim())
101
- .filter(Boolean);
102
- if (opts.otherLabel !== undefined)
103
- body.otherLabel = opts.otherLabel;
104
- if (opts.note)
105
- body.note = opts.note;
106
- await withPermissionGates({
107
- command: "subreddit-post-styles accept",
108
- gates: [
109
- { resource: "subredditPostAnnotation", action: "create" },
110
- { resource: "subredditPostAnnotation", action: "update" },
111
- ],
112
- teamId,
113
- userOnly: true,
114
- }, async () => {
115
- if (!assertApplyOrDryRun(opts, {
116
- command: "subreddit-post-styles accept",
117
- danger: "write",
118
- summary: { teamId, ...body },
119
- })) {
120
- return;
121
- }
122
- printResult(await hubRequest(`/v1/teams/${encodeURIComponent(teamId)}/subreddit-post-styles/accept`, { method: "POST", body }));
123
- });
124
- });
125
- });
126
- group
127
- .command("reject")
128
- .description("POST .../subreddit-post-styles/reject — 单人拒绝一条 LLM proposed 标签(写 team 级 human rejected 行)")
129
- .requiredOption("--label-id <uuid>", "被拒绝的 LLM proposed 标签 id")
130
- .option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
131
- .option("--note <text>", "备注(≤2000)")
132
- .option("--dry-run", "预览", false)
133
- .option("--apply", "执行写入", false)
134
- .action(async (opts) => {
135
- await withCliErrorBoundary(async () => {
136
- const teamId = resolveTeamId(opts.team);
137
- const body = { labelId: opts.labelId };
138
- if (opts.note)
139
- body.note = opts.note;
140
- await withPermissionGates({
141
- command: "subreddit-post-styles reject",
142
- gates: [
143
- { resource: "subredditPostAnnotation", action: "create" },
144
- { resource: "subredditPostAnnotation", action: "update" },
145
- ],
146
- teamId,
147
- userOnly: true,
148
- }, async () => {
149
- if (!assertApplyOrDryRun(opts, {
150
- command: "subreddit-post-styles reject",
151
- danger: "write",
152
- summary: { teamId, ...body },
153
- })) {
154
- return;
155
- }
156
- printResult(await hubRequest(`/v1/teams/${encodeURIComponent(teamId)}/subreddit-post-styles/reject`, { method: "POST", body }));
157
- });
158
- });
159
- });
160
- }
161
- //# sourceMappingURL=register-subreddit-post-style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register-subreddit-post-style.js","sourceRoot":"","sources":["../src/register-subreddit-post-style.ts"],"names":[],"mappings":"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"}