@geoly-ai/social-hub-cli 0.3.34 → 0.3.36
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 +12 -0
- package/dist/cmd-manifest.json +2 -2
- package/dist/register-reddit-account-verification.d.ts +3 -0
- package/dist/register-reddit-account-verification.d.ts.map +1 -1
- package/dist/register-reddit-account-verification.js +18 -1
- package/dist/register-reddit-account-verification.js.map +1 -1
- package/dist/register-reddit-account-verification.test.d.ts +2 -0
- package/dist/register-reddit-account-verification.test.d.ts.map +1 -0
- package/dist/register-reddit-account-verification.test.js +95 -0
- package/dist/register-reddit-account-verification.test.js.map +1 -0
- package/package.json +2 -2
- package/skills/integrity.json +1 -1
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ 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.36] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- help 文本补上三列 —— 它是调用方的能力判据,漏了等于功能没做
|
|
12
|
+
|
|
13
|
+
## [0.3.35] - 2026-09-01
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- CLI/SDK 补 0164 三列 —— 白名单静默吞掉了它们
|
|
18
|
+
|
|
7
19
|
## [0.3.34] - 2026-09-01
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/cmd-manifest.json
CHANGED
|
@@ -17,6 +17,9 @@ export declare function buildRecordObservationBody(raw: Record<string, unknown>)
|
|
|
17
17
|
sourceEventType: string;
|
|
18
18
|
deadlineRaw?: string | null;
|
|
19
19
|
deadlineAt?: string | null;
|
|
20
|
+
platformStatusRaw?: string | null;
|
|
21
|
+
platformCaseId?: string | null;
|
|
22
|
+
documentLang?: string | null;
|
|
20
23
|
evidence: Array<{
|
|
21
24
|
kind: (typeof evidenceKinds)[number];
|
|
22
25
|
ref?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-reddit-account-verification.d.ts","sourceRoot":"","sources":["../src/register-reddit-account-verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;;;GAOG;AAEH,QAAA,MAAM,aAAa,4DAIT,CAAC;AACX,QAAA,MAAM,cAAc,+DAIV,CAAC;AAQX,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACxE,aAAa,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;CACJ,
|
|
1
|
+
{"version":3,"file":"register-reddit-account-verification.d.ts","sourceRoot":"","sources":["../src/register-reddit-account-verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;;;GAOG;AAEH,QAAA,MAAM,aAAa,4DAIT,CAAC;AACX,QAAA,MAAM,cAAc,+DAIV,CAAC;AAQX,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACxE,aAAa,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC,CAAC;CACJ,CAqEA;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,OAAO,GACf,IAAI,CAgMN"}
|
|
@@ -53,6 +53,14 @@ export function buildRecordObservationBody(raw) {
|
|
|
53
53
|
const sourceEventType = str("sourceEventType", true);
|
|
54
54
|
const deadlineRaw = str("deadlineRaw", false);
|
|
55
55
|
const deadlineAt = str("deadlineAt", false);
|
|
56
|
+
// 🔴 迁移 0164 的三列。本函数是**显式白名单**(逐键取,不是透传),所以服务端每加
|
|
57
|
+
// 一个字段这里都必须同步加一条 —— 否则调用方送了、CLI 静默丢掉,而 `--dry-run` 的
|
|
58
|
+
// wouldApply 是 CLI **自己重新拼出来的**,同样不会回显被丢掉的键:
|
|
59
|
+
// 「送了但没写进去」与「写进去了」在 CLI 输出上完全一样。
|
|
60
|
+
// ⚠️ 这已经真实发生过一次(0.3.34 漏了这三列,矩阵侧端到端才发现)。
|
|
61
|
+
const platformStatusRaw = str("platformStatusRaw", false);
|
|
62
|
+
const platformCaseId = str("platformCaseId", false);
|
|
63
|
+
const documentLang = str("documentLang", false);
|
|
56
64
|
const evidenceRaw = raw.evidence;
|
|
57
65
|
if (!Array.isArray(evidenceRaw) || evidenceRaw.length === 0) {
|
|
58
66
|
return fail("--json 字段 evidence 须为非空数组");
|
|
@@ -82,6 +90,9 @@ export function buildRecordObservationBody(raw) {
|
|
|
82
90
|
sourceEventType,
|
|
83
91
|
...(deadlineRaw ? { deadlineRaw } : {}),
|
|
84
92
|
...(deadlineAt ? { deadlineAt } : {}),
|
|
93
|
+
...(platformStatusRaw ? { platformStatusRaw } : {}),
|
|
94
|
+
...(platformCaseId ? { platformCaseId } : {}),
|
|
95
|
+
...(documentLang ? { documentLang } : {}),
|
|
85
96
|
evidence,
|
|
86
97
|
};
|
|
87
98
|
}
|
|
@@ -138,7 +149,13 @@ export function registerRedditAccountVerificationCommands(program) {
|
|
|
138
149
|
.description("POST .../accounts/:accountId/reddit-verification/observations — 幂等键 requestId;201=recorded/200=duplicate_delivery/409=两种专用冲突码")
|
|
139
150
|
.option("-t, --team <teamId>", "Team UUID(缺省用当前 context)")
|
|
140
151
|
.requiredOption("--account-id <uuid>", "social_accounts.id")
|
|
141
|
-
.requiredOption("-j, --json <json>",
|
|
152
|
+
.requiredOption("-j, --json <json>",
|
|
153
|
+
// ⚠️ 这段 help 文本是调用方的**能力判据**:矩阵侧的写入脚本靠 `--help` 里有没有
|
|
154
|
+
// 列出某个键来决定要不要拦下写入(没列出 → 判定 CLI 太旧、拒绝写并提示升级)。
|
|
155
|
+
// 所以**新增字段时这里必须同步更新** —— 否则实现支持了、help 没跟上,
|
|
156
|
+
// 调用方会被自己的闸门误拦,与字段根本没实现的表现完全一样。
|
|
157
|
+
// 🔴 已真实发生过一次(0.3.35 补了三列的透传却漏了 help)。
|
|
158
|
+
'{ "observedState","observedAt","requestId","sourceEventType", 可选 "deadlineRaw"/"deadlineAt"/"platformStatusRaw"/"platformCaseId"/"documentLang", "evidence":[{"kind",...}] }')
|
|
142
159
|
.option("--dry-run", "预览", false)
|
|
143
160
|
.option("--apply", "执行写入", false)
|
|
144
161
|
.action(async (opts) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-reddit-account-verification.js","sourceRoot":"","sources":["../src/register-reddit-account-verification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;GAOG;AAEH,MAAM,aAAa,GAAG;IACpB,cAAc;IACd,YAAY;IACZ,iBAAiB;CACT,CAAC;AACX,MAAM,cAAc,GAAG;IACrB,uBAAuB;IACvB,aAAa;IACb,UAAU;CACF,CAAC;AACX,MAAM,sBAAsB,GAAG;IAC7B,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC;AAEX,0DAA0D;AAC1D,MAAM,UAAU,0BAA0B,CAAC,GAA4B;
|
|
1
|
+
{"version":3,"file":"register-reddit-account-verification.js","sourceRoot":"","sources":["../src/register-reddit-account-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-reddit-account-verification.test.d.ts","sourceRoot":"","sources":["../src/register-reddit-account-verification.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `buildRecordObservationBody` —— Reddit 账号验证观测的 `--json` 解析。
|
|
3
|
+
*
|
|
4
|
+
* 🔴 这个文件只为一件事存在:**它是显式白名单,不是透传**。服务端每加一个字段,
|
|
5
|
+
* 这里都必须同步加一条,否则调用方送了、CLI 静默丢掉。
|
|
6
|
+
*
|
|
7
|
+
* ⚠️ 而且失败的样子和成功一模一样:`--dry-run` 的 `wouldApply` 是 CLI **自己重新拼出来
|
|
8
|
+
* 的**,不是调用方 payload 的回声,所以被丢掉的键在 dry-run 里同样不显示。
|
|
9
|
+
* 「送了但没写进去」与「写进去了」在 CLI 输出上**完全无法区分**。
|
|
10
|
+
*
|
|
11
|
+
* 这已经真实发生过:0.3.34 漏了迁移 0164 的三列(`platformStatusRaw` /
|
|
12
|
+
* `platformCaseId` / `documentLang`),矩阵侧做端到端才发现。后果不只是少三个字段——
|
|
13
|
+
* 调用方的 `requestId` 是**带着这三个字段**算出来的,少带写进去,存下来的行就与它自己
|
|
14
|
+
* 的幂等键对不上;将来用支持字段的 CLI 重送同一次 capture,会撞「同 requestId、
|
|
15
|
+
* 不同内容」的 409。
|
|
16
|
+
*
|
|
17
|
+
* 所以下面那条「透传全部已知字段」的用例是**回归闸门**:新增字段时它会红,提醒你
|
|
18
|
+
* 这里要跟着改。
|
|
19
|
+
*/
|
|
20
|
+
import { describe, expect, it } from "vitest";
|
|
21
|
+
import { buildRecordObservationBody } from "./register-reddit-account-verification.js";
|
|
22
|
+
const base = {
|
|
23
|
+
observedState: "verification_required",
|
|
24
|
+
observedAt: "2026-09-01T00:00:00.000Z",
|
|
25
|
+
requestId: "req-1",
|
|
26
|
+
sourceEventType: "risk.human_verification",
|
|
27
|
+
evidence: [{ kind: "dom_snapshot", ref: "dom-1" }],
|
|
28
|
+
};
|
|
29
|
+
describe("buildRecordObservationBody", () => {
|
|
30
|
+
it("🔴 迁移 0164 的三列必须透传,⛔ 不许被白名单吞掉", () => {
|
|
31
|
+
const body = buildRecordObservationBody({
|
|
32
|
+
...base,
|
|
33
|
+
platformStatusRaw: "ACTION_NEEDED",
|
|
34
|
+
platformCaseId: "67a222f2-86d1-44ba-a59a-3a24e8f5c41a",
|
|
35
|
+
documentLang: "es-ES",
|
|
36
|
+
});
|
|
37
|
+
expect(body.platformStatusRaw).toBe("ACTION_NEEDED");
|
|
38
|
+
expect(body.platformCaseId).toBe("67a222f2-86d1-44ba-a59a-3a24e8f5c41a");
|
|
39
|
+
expect(body.documentLang).toBe("es-ES");
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* `platformStatusRaw` 的值域**刻意不校验** —— 这个字段存在的唯一理由就是接住 Reddit
|
|
43
|
+
* 将来新增的、我们还不认识的状态值。若在 CLI 或契约层限死枚举,未知值会被拒收,
|
|
44
|
+
* 那就回到了「只有映射结果、发现不了新状态」的老问题。
|
|
45
|
+
*/
|
|
46
|
+
it("🔴 未知的 platformStatusRaw 原样透传,⛔ 不做枚举校验", () => {
|
|
47
|
+
const body = buildRecordObservationBody({
|
|
48
|
+
...base,
|
|
49
|
+
platformStatusRaw: "SOME_FUTURE_STATE",
|
|
50
|
+
});
|
|
51
|
+
expect(body.platformStatusRaw).toBe("SOME_FUTURE_STATE");
|
|
52
|
+
});
|
|
53
|
+
// 正向控制组:证明上面那两条不是因为函数把**所有**输入都原样带出来了。
|
|
54
|
+
// 未知键必须被丢弃(白名单的本意),⛔ 不能连它一起透传。
|
|
55
|
+
it("未在白名单里的键仍然被丢弃(证明白名单本身还在起作用)", () => {
|
|
56
|
+
const body = buildRecordObservationBody({
|
|
57
|
+
...base,
|
|
58
|
+
someUnknownKey: "should-not-appear",
|
|
59
|
+
});
|
|
60
|
+
expect(body).not.toHaveProperty("someUnknownKey");
|
|
61
|
+
// 前提:合法字段确实带出来了,否则上面那条 not.toHaveProperty 在验空气。
|
|
62
|
+
expect(body.sourceEventType).toBe("risk.human_verification");
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* 🔴 help 文本是**调用方的能力判据**:矩阵侧的写入脚本靠 `--help` 里有没有列出某个键
|
|
66
|
+
* 来决定拦不拦写入。所以 help 与实现脱节的后果,与字段根本没实现**完全一样** ——
|
|
67
|
+
* 调用方被自己的闸门拦住,而 CLI 其实是支持的。
|
|
68
|
+
*
|
|
69
|
+
* 这已经发生过:0.3.35 补了透传却漏了 help。本用例锁死两者一致。
|
|
70
|
+
*/
|
|
71
|
+
it("🔴 help 文本必须列出所有可选字段(调用方拿它当能力判据)", async () => {
|
|
72
|
+
const src = await import("node:fs").then((fs) => fs.readFileSync(new URL("./register-reddit-account-verification.ts", import.meta.url), "utf8"));
|
|
73
|
+
const help = src.match(/'\{ "observedState".*?\}',/s)?.[0] ?? "";
|
|
74
|
+
// 前提(正向控制组):确实抓到了那段 help 文本,否则下面在验空字符串。
|
|
75
|
+
expect(help).toContain("observedState");
|
|
76
|
+
for (const key of [
|
|
77
|
+
"deadlineRaw",
|
|
78
|
+
"deadlineAt",
|
|
79
|
+
"platformStatusRaw",
|
|
80
|
+
"platformCaseId",
|
|
81
|
+
"documentLang",
|
|
82
|
+
]) {
|
|
83
|
+
expect(help).toContain(key);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
it("三列省略时不出现在 body 里(`null` 由服务端解释为「本次未取到」)", () => {
|
|
87
|
+
const body = buildRecordObservationBody({ ...base });
|
|
88
|
+
expect(body).not.toHaveProperty("platformStatusRaw");
|
|
89
|
+
expect(body).not.toHaveProperty("platformCaseId");
|
|
90
|
+
expect(body).not.toHaveProperty("documentLang");
|
|
91
|
+
// 前提:必填字段在,证明这次解析确实成功了。
|
|
92
|
+
expect(body.requestId).toBe("req-1");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=register-reddit-account-verification.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-reddit-account-verification.test.js","sourceRoot":"","sources":["../src/register-reddit-account-verification.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoly-ai/social-hub-cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.36",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "social-hub CLI for Social Ops Hub",
|
|
6
6
|
"repository": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"commander": "^12.1.0",
|
|
25
25
|
"@geoly-ai/social-hub-authz": "0.0.20",
|
|
26
|
-
"@geoly-ai/social-hub-sdk": "0.1.
|
|
26
|
+
"@geoly-ai/social-hub-sdk": "0.1.9"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^22.10.2",
|
package/skills/integrity.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"fileCount": 1656,
|
|
5
5
|
"files": {
|
|
6
6
|
"README.md": "5246d4ae2712e3e656b101041929183d7ae7f8ea487dacf5854187826ab7c335",
|
|
7
|
-
"manifest.json": "
|
|
7
|
+
"manifest.json": "5739f1d0e23f0a89b0df2b6e4d4a233cbb821c24271a251e06a1f8079e23d1f2",
|
|
8
8
|
"reddit-answers-research/SKILL.md": "ab6fd12eeb2fef4dc31a6f3c21a84810d6b5bdb309f130bcdc9eb902f075294a",
|
|
9
9
|
"reddit-answers-research/references/browser-playbook.md": "a8f61d3d43ca93d46dadc8a092a515ddcd32df12fb1d08d334cce2e02709d915",
|
|
10
10
|
"reddit-answers-research/references/report-template.md": "9aa9acf555ba8b2ca503bdbdf5750a5f53c66e19989bf6807fa6200c7317e306",
|