@geoly-ai/social-hub-cli 0.3.39 → 0.3.41
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 +23 -0
- package/dist/cmd-manifest.json +24 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +329 -1
- package/dist/index.js.map +1 -1
- package/dist/partial-list-guard.test.js +73 -5
- package/dist/partial-list-guard.test.js.map +1 -1
- package/dist/register-extensions.d.ts.map +1 -1
- package/dist/register-extensions.js +4 -0
- package/dist/register-extensions.js.map +1 -1
- package/package.json +2 -2
- package/skills/integrity.json +5 -5
- package/skills/manifest.json +1 -1
- package/skills/social-hub-calendar-directives/SKILL.md +15 -0
- package/skills/social-hub-intelligence/SKILL.md +134 -0
- package/skills/social-hub-posts/SKILL.md +3 -0
- package/skills/social-hub-shared/SKILL.md +24 -0
- package/dist/register-subreddit-post-style.d.ts +0 -8
- package/dist/register-subreddit-post-style.d.ts.map +0 -1
- package/dist/register-subreddit-post-style.js +0 -161
- package/dist/register-subreddit-post-style.js.map +0 -1
|
@@ -177,6 +177,30 @@ admin 专属操作(如 `agent-teams create`)需要 **admin** role 的 CLI to
|
|
|
177
177
|
|
|
178
178
|
每次执行 `social-hub`(含 `version` / `help` 及 `--version` / `--help`;仅 `self-update`、CI、npx 临时运行、`--no-update-check`、`SOCIAL_HUB_NO_UPDATE_CHECK=1` 除外)会(最多每 **4 小时**)查询 npm registry;若存在更新的 `@geoly-ai/social-hub-cli`,**默认后台静默 `npm i -g @latest`(本次调用仍用旧版跑完,下次调用自动生效,不重启/不 re-exec)**;`SOCIAL_HUB_NO_AUTO_UPDATE=1` 或 npx 场景退回「仅 stderr 提示」。`version` / `help` 命中时只从新鲜缓存触发后台自升级、自身不发网络请求(保 `--version` 即时输出)。
|
|
179
179
|
|
|
180
|
+
### ⚠️ 常驻进程(runner / cron / 守护)必须知道的一个窗口
|
|
181
|
+
|
|
182
|
+
`npm install -g` **不是原子的**:解包与重建 `bin/` 软链之间有一小段时间,
|
|
183
|
+
`$(npm prefix -g)/bin/social-hub` 可能瞬时不可用。按**绝对路径**调用 CLI 的常驻进程
|
|
184
|
+
在这段窗口里会拿到:
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
Error: Cannot find module '/opt/homebrew/bin/social-hub'
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
🔴 **这不是 CLI 坏了,也不是可以靠 CLI 自己修的** —— 软链就是入口,它不在的时候
|
|
191
|
+
任何「启动时自检」的代码都不会被执行到;而 npm 的非原子性不在本仓控制范围内。
|
|
192
|
+
2026-09-03 在部署机 claw 的 directive runner 日志里真实出现过一次(`pull rc=1`,
|
|
193
|
+
下一轮自行恢复)。
|
|
194
|
+
|
|
195
|
+
**常驻进程按这个顺序处置:**
|
|
196
|
+
|
|
197
|
+
1. **设 `SOCIAL_HUB_NO_AUTO_UPDATE=1`**,改成在自己的维护窗口里显式跑
|
|
198
|
+
`social-hub self-update` —— 这是唯一能彻底避开窗口的做法;
|
|
199
|
+
2. 做不到的话,**对 `Cannot find module` / ENOENT 重试一次**(窗口是秒级,
|
|
200
|
+
下一轮必然恢复);
|
|
201
|
+
3. ⛔ **不要**据此判定「CLI 没装好」而去重装或告警升级 —— 那会把一次秒级窗口
|
|
202
|
+
放大成一次人工介入。
|
|
203
|
+
|
|
180
204
|
示例输出(节选):
|
|
181
205
|
|
|
182
206
|
```text
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Command } from "commander";
|
|
2
|
-
/**
|
|
3
|
-
* 板块运营数据 Phase 1 —— 热帖风格标注(subreddit_post_style_labels)CLI 读 + 单人复核。
|
|
4
|
-
* SDK 未覆盖(同 subreddit-style/annotations 域约定,HTTP 走 hubRequest)。复核 user-only、
|
|
5
|
-
* 单人(非四眼);accept 可修正 primary/secondary/other,写一条 team 级 human 行(不改 LLM 行)。
|
|
6
|
-
*/
|
|
7
|
-
export declare function registerSubredditPostStyleCommands(program: Command): void;
|
|
8
|
-
//# sourceMappingURL=register-subreddit-post-style.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register-subreddit-post-style.d.ts","sourceRoot":"","sources":["../src/register-subreddit-post-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2LzE"}
|
|
@@ -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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"}
|