@geoly-ai/social-hub-cli 0.3.48 → 0.3.49

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.
@@ -0,0 +1,8 @@
1
+ import type { CliPermissionGate } from "./permissions.js";
2
+ /**
3
+ * 派单(CyberRedd)品牌映射与接单团队 CLI gates(B4)。
4
+ * 全部是系统级、不要求 -t:独立资源 `systemIntakeMapping`,**仅 admin**;API 另拒 API key / 服务凭据 /
5
+ * 受限(绑定 job/account、带动作白名单)的 CLI token。
6
+ */
7
+ export declare const INTAKE_PERMISSION_GATES: CliPermissionGate[];
8
+ //# sourceMappingURL=permissions-gates-intake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-gates-intake.d.ts","sourceRoot":"","sources":["../src/permissions-gates-intake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,EA+BtD,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 派单(CyberRedd)品牌映射与接单团队 CLI gates(B4)。
3
+ * 全部是系统级、不要求 -t:独立资源 `systemIntakeMapping`,**仅 admin**;API 另拒 API key / 服务凭据 /
4
+ * 受限(绑定 job/account、带动作白名单)的 CLI token。
5
+ */
6
+ export const INTAKE_PERMISSION_GATES = [
7
+ {
8
+ command: "intake mappings list",
9
+ resource: "systemIntakeMapping",
10
+ action: "list",
11
+ note: "admin only; unrestricted login only",
12
+ },
13
+ {
14
+ command: "intake mappings get",
15
+ resource: "systemIntakeMapping",
16
+ action: "read",
17
+ note: "admin only; unrestricted login only",
18
+ },
19
+ {
20
+ command: "intake mappings set",
21
+ resource: "systemIntakeMapping",
22
+ action: "update",
23
+ note: "admin only; user only(API 拒 API Key / 服务 token / 受限 token)",
24
+ },
25
+ {
26
+ command: "intake order-team get",
27
+ resource: "systemIntakeMapping",
28
+ action: "read",
29
+ note: "admin only; unrestricted login only",
30
+ },
31
+ {
32
+ command: "intake order-team set",
33
+ resource: "systemIntakeMapping",
34
+ action: "update",
35
+ note: "admin only; user only",
36
+ },
37
+ ];
38
+ //# sourceMappingURL=permissions-gates-intake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-gates-intake.js","sourceRoot":"","sources":["../src/permissions-gates-intake.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D;QACE,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qCAAqC;KAC5C;IACD;QACE,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qCAAqC;KAC5C;IACD;QACE,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,4DAA4D;KACnE;IACD;QACE,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qCAAqC;KAC5C;IACD;QACE,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,uBAAuB;KAC9B;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=permissions-gates-intake.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-gates-intake.test.d.ts","sourceRoot":"","sources":["../src/permissions-gates-intake.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { beforeAll, describe, expect, it, vi } from "vitest";
2
+ import { canPerformAction } from "@geoly-ai/social-hub-authz";
3
+ import { listAllCommandPaths } from "./cmd-manifest.js";
4
+ import { INTAKE_PERMISSION_GATES } from "./permissions-gates-intake.js";
5
+ import { CLI_PERMISSION_GATES, findGateForCommand } from "./permissions.js";
6
+ vi.mock("@geoly-ai/social-hub-sdk", () => ({
7
+ SocialHubClient: vi.fn().mockImplementation(() => ({})),
8
+ getSocialHubHealth: vi.fn(),
9
+ }));
10
+ let program;
11
+ beforeAll(async () => {
12
+ program = (await import("./index.js")).program;
13
+ });
14
+ describe("intake CLI permission gates", () => {
15
+ it("全部登记进 CLI_PERMISSION_GATES 且路径唯一", () => {
16
+ for (const gate of INTAKE_PERMISSION_GATES) {
17
+ expect(findGateForCommand(gate.command)).toEqual(gate);
18
+ }
19
+ const commands = CLI_PERMISSION_GATES.map((g) => g.command);
20
+ expect(commands.length).toBe(new Set(commands).size);
21
+ });
22
+ it("覆盖 intake 树的全部叶子命令(新增子命令忘配 gate 会红)", () => {
23
+ const leaves = listAllCommandPaths(program).filter((p) => p.startsWith("intake "));
24
+ // 叶子 = 有 gate 的命令;中间节点 `intake mappings` / `intake order-team` 不是叶子。
25
+ const leafOnly = leaves.filter((p) => !["intake mappings", "intake order-team"].includes(p));
26
+ expect(leafOnly.length).toBe(5);
27
+ expect(INTAKE_PERMISSION_GATES.map((g) => g.command).sort()).toEqual(leafOnly.sort());
28
+ });
29
+ it("系统级命令:manager 本地预检被拒,admin 放行", () => {
30
+ for (const gate of INTAKE_PERMISSION_GATES) {
31
+ expect(gate.resource).toBe("systemIntakeMapping");
32
+ expect(canPerformAction({ role: "manager", ...gate })).toBe(false);
33
+ expect(canPerformAction({ role: "admin", ...gate })).toBe(true);
34
+ }
35
+ });
36
+ });
37
+ //# sourceMappingURL=permissions-gates-intake.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-gates-intake.test.js","sourceRoot":"","sources":["../src/permissions-gates-intake.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,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,OAAgB,CAAC;AACrB,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAA6B,CAAC;AACvE,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;YAC3C,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CACxB,CAAC;QACF,qEAAqE;QACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7D,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAClE,QAAQ,CAAC,IAAI,EAAE,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClD,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AAOpC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAmHnD,CAAC;AAEF,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAET;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;oDACgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAST;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACjD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;2CACuC;IACvC,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD,CAgBA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAIP;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,iBAAiB,GAAG,SAAS,CAE/B"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AAQpC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAoHnD,CAAC;AAEF,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAET;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;oDACgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAST;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACjD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;2CACuC;IACvC,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD,CAgBA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAIP;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,iBAAiB,GAAG,SAAS,CAE/B"}
@@ -4,6 +4,7 @@ import { SUBREDDIT_STYLE_PERMISSION_GATES } from "./permissions-gates-subreddit-
4
4
  import { CONTENT_CLASSIFICATION_PERMISSION_GATES } from "./permissions-gates-content-classification.js";
5
5
  import { NOTIFY_PERMISSION_GATES } from "./permissions-gates-notify.js";
6
6
  import { RESTRICTION_PERMISSION_GATES } from "./permissions-gates-restrictions.js";
7
+ import { INTAKE_PERMISSION_GATES } from "./permissions-gates-intake.js";
7
8
  /** Representative write/high-risk commands mapped to authz resources. */
8
9
  export const CLI_PERMISSION_GATES = [
9
10
  { command: "accounts list", resource: "socialAccount", action: "list" },
@@ -120,6 +121,7 @@ export const CLI_PERMISSION_GATES = [
120
121
  ...CONTENT_CLASSIFICATION_PERMISSION_GATES,
121
122
  ...NOTIFY_PERMISSION_GATES,
122
123
  ...RESTRICTION_PERMISSION_GATES,
124
+ ...INTAKE_PERMISSION_GATES,
123
125
  ];
124
126
  export function roleAllows(role, resource, action) {
125
127
  return canPerformAction({ role, resource, action });
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Command } from "commander";
2
+ import type { ListIntakeBrandMappingsParams, UpdateIntakeBrandMappingInput } from "@geoly-ai/social-hub-sdk";
3
+ export declare function buildListMappingsParams(opts: {
4
+ status?: string;
5
+ mapped?: string;
6
+ limit?: string;
7
+ offset?: string;
8
+ }): ListIntakeBrandMappingsParams;
9
+ export declare function buildSetMappingBody(opts: {
10
+ rowVersion?: string;
11
+ brandId?: string;
12
+ teamIds?: string;
13
+ status?: string;
14
+ name?: string;
15
+ }): UpdateIntakeBrandMappingInput;
16
+ export declare function registerIntakeCommands(program: Command): void;
17
+ //# sourceMappingURL=register-intake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-intake.d.ts","sourceRoot":"","sources":["../src/register-intake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAkClC,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,6BAA6B,CAkBhC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,6BAA6B,CA+BhC;AAOD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkJ7D"}
@@ -0,0 +1,188 @@
1
+ import { requireClient } 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
+ * 派单(CyberRedd)品牌映射与接单团队 —— `social-hub intake ...`(B4)。
7
+ *
8
+ * 全部是**系统级**命令(不要求 `-t`):只给不受限登录的 admin;API 侧对 API key / 服务凭据 /
9
+ * 受限 CLI token 读写全 403。写命令一律 `--dry-run` / `--apply` 双闸。
10
+ * 映射补齐后,该品牌的 received 订单会被自动标记为「品牌已解析」;接单(accepted)在后续版本上线。
11
+ */
12
+ class CliInputError extends Error {
13
+ }
14
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
15
+ function uuid(flag, value) {
16
+ if (typeof value !== "string" || !UUID_RE.test(value)) {
17
+ throw new CliInputError(`${flag} must be a uuid`);
18
+ }
19
+ return value;
20
+ }
21
+ function int(flag, value, min) {
22
+ const n = Number(value);
23
+ if (!Number.isInteger(n) || n < min) {
24
+ throw new CliInputError(`${flag} must be an integer >= ${min}`);
25
+ }
26
+ return n;
27
+ }
28
+ export function buildListMappingsParams(opts) {
29
+ const params = {};
30
+ if (opts.status !== undefined) {
31
+ if (opts.status !== "active" && opts.status !== "disabled") {
32
+ throw new CliInputError("--status must be active | disabled");
33
+ }
34
+ params.status = opts.status;
35
+ }
36
+ if (opts.mapped !== undefined) {
37
+ if (opts.mapped !== "mapped" && opts.mapped !== "pending") {
38
+ throw new CliInputError("--mapped must be mapped | pending");
39
+ }
40
+ params.mapped = opts.mapped;
41
+ }
42
+ if (opts.limit !== undefined)
43
+ params.limit = int("--limit", opts.limit, 1);
44
+ if (opts.offset !== undefined)
45
+ params.offset = int("--offset", opts.offset, 0);
46
+ return params;
47
+ }
48
+ export function buildSetMappingBody(opts) {
49
+ if (opts.rowVersion === undefined) {
50
+ throw new CliInputError("--row-version is required (take it from `intake mappings get <id>`)");
51
+ }
52
+ const body = {
53
+ rowVersion: int("--row-version", opts.rowVersion, 1),
54
+ };
55
+ if (opts.brandId !== undefined)
56
+ body.brandId = uuid("--brand-id", opts.brandId);
57
+ if (opts.teamIds !== undefined) {
58
+ body.eligibleTeamIds = opts.teamIds
59
+ .split(",")
60
+ .map((s) => s.trim())
61
+ .filter((s) => s.length > 0)
62
+ .map((s) => uuid("--team-ids", s));
63
+ }
64
+ if (opts.status !== undefined) {
65
+ if (opts.status !== "active" && opts.status !== "disabled") {
66
+ throw new CliInputError("--status must be active | disabled");
67
+ }
68
+ body.status = opts.status;
69
+ }
70
+ if (opts.name !== undefined)
71
+ body.externalBrandName = opts.name;
72
+ if (Object.keys(body).length === 1) {
73
+ throw new CliInputError("nothing to change: pass at least one of --brand-id --team-ids --status --name");
74
+ }
75
+ return body;
76
+ }
77
+ const writeFlags = (cmd) => cmd
78
+ .option("--dry-run", "预览,不写入", false)
79
+ .option("--apply", "执行写入", false);
80
+ export function registerIntakeCommands(program) {
81
+ const intake = program
82
+ .command("intake")
83
+ .description("CyberRedd 派单:品牌映射与接单团队(系统级,仅不受限登录的 admin;不需要 -t)");
84
+ const mappings = intake
85
+ .command("mappings")
86
+ .description("外部品牌 ref ↔ Hub 品牌映射");
87
+ mappings
88
+ .command("list")
89
+ .description("GET /v1/system/intake-admin/brand-mappings — 列表(--mapped pending 看待映射)")
90
+ .option("--status <s>", "active | disabled")
91
+ .option("--mapped <m>", "mapped | pending(待映射 = 还没绑品牌)")
92
+ .option("--limit <n>", "每页条数(1-200,默认 50)")
93
+ .option("--offset <n>", "偏移")
94
+ .action(async (opts) => {
95
+ await withCliErrorBoundary(async () => {
96
+ const params = buildListMappingsParams(opts);
97
+ await withPermissionGates({
98
+ command: "intake mappings list",
99
+ gates: [{ resource: "systemIntakeMapping", action: "list" }],
100
+ userOnly: true,
101
+ }, async () => {
102
+ printResult(await requireClient().listIntakeBrandMappings(params));
103
+ });
104
+ });
105
+ });
106
+ mappings
107
+ .command("get")
108
+ .description("GET .../brand-mappings/:id — 单条(含 rowVersion,set 要用)")
109
+ .argument("<id>", "mapping id")
110
+ .action(async (id) => {
111
+ await withCliErrorBoundary(async () => {
112
+ await withPermissionGates({
113
+ command: "intake mappings get",
114
+ gates: [{ resource: "systemIntakeMapping", action: "read" }],
115
+ userOnly: true,
116
+ }, async () => {
117
+ printResult(await requireClient().getIntakeBrandMapping(id));
118
+ });
119
+ });
120
+ });
121
+ writeFlags(mappings
122
+ .command("set")
123
+ .description("PATCH .../brand-mappings/:id — 设置品牌 / 可用团队 / 状态(--row-version 必填;409 = 版本过期)。已映射行不能改回未映射,要停用请 --status disabled")
124
+ .argument("<id>", "mapping id")
125
+ .requiredOption("--row-version <n>", "当前 rowVersion(乐观锁)")
126
+ .option("--brand-id <uuid>", "Hub 品牌 id")
127
+ .option("--team-ids <uuids>", "可用团队,逗号分隔(已映射时至少 1 个)")
128
+ .option("--status <s>", "active | disabled")
129
+ .option("--name <text>", "展示名快照")).action(async (id, opts) => {
130
+ await withCliErrorBoundary(async () => {
131
+ const body = buildSetMappingBody(opts);
132
+ await withPermissionGates({
133
+ command: "intake mappings set",
134
+ gates: [{ resource: "systemIntakeMapping", action: "update" }],
135
+ userOnly: true,
136
+ }, async () => {
137
+ if (!assertApplyOrDryRun(opts, {
138
+ command: "intake mappings set",
139
+ danger: "changes which teams may take orders for this external brand",
140
+ summary: { id, ...body },
141
+ })) {
142
+ return;
143
+ }
144
+ printResult(await requireClient().updateIntakeBrandMapping(id, body));
145
+ });
146
+ });
147
+ });
148
+ const orderTeam = intake
149
+ .command("order-team")
150
+ .description("接单团队(派单挂在哪个团队下)");
151
+ orderTeam
152
+ .command("get")
153
+ .description("GET /v1/system/intake-admin/order-team")
154
+ .action(async () => {
155
+ await withCliErrorBoundary(async () => {
156
+ await withPermissionGates({
157
+ command: "intake order-team get",
158
+ gates: [{ resource: "systemIntakeMapping", action: "read" }],
159
+ userOnly: true,
160
+ }, async () => {
161
+ printResult(await requireClient().getIntakeOrderTeam());
162
+ });
163
+ });
164
+ });
165
+ writeFlags(orderTeam
166
+ .command("set")
167
+ .description("PUT /v1/system/intake-admin/order-team — 设置接单团队(团队须存在;未配置时建单 503)")
168
+ .requiredOption("--team-id <uuid>", "接单团队 id")).action(async (opts) => {
169
+ await withCliErrorBoundary(async () => {
170
+ const teamId = uuid("--team-id", opts.teamId);
171
+ await withPermissionGates({
172
+ command: "intake order-team set",
173
+ gates: [{ resource: "systemIntakeMapping", action: "update" }],
174
+ userOnly: true,
175
+ }, async () => {
176
+ if (!assertApplyOrDryRun(opts, {
177
+ command: "intake order-team set",
178
+ danger: "system-wide: all new CyberRedd orders land in this team",
179
+ summary: { teamId },
180
+ })) {
181
+ return;
182
+ }
183
+ printResult(await requireClient().setIntakeOrderTeam(teamId));
184
+ });
185
+ });
186
+ });
187
+ }
188
+ //# sourceMappingURL=register-intake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-intake.js","sourceRoot":"","sources":["../src/register-intake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register-intake.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-intake.test.d.ts","sourceRoot":"","sources":["../src/register-intake.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ /** `social-hub intake ...`(B4):命令树、写命令双闸、参数 → 请求映射、不要求 -t。 */
2
+ import { Command } from "commander";
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ const client = vi.hoisted(() => ({
5
+ listIntakeBrandMappings: vi.fn(),
6
+ getIntakeBrandMapping: vi.fn(),
7
+ updateIntakeBrandMapping: vi.fn(),
8
+ getIntakeOrderTeam: vi.fn(),
9
+ setIntakeOrderTeam: vi.fn(),
10
+ }));
11
+ const gates = vi.hoisted(() => ({ calls: [] }));
12
+ vi.mock("./client.js", async (importOriginal) => ({
13
+ ...(await importOriginal()),
14
+ requireClient: () => client,
15
+ }));
16
+ vi.mock("./permission-runner.js", () => ({
17
+ withPermissionGates: async (input, run) => {
18
+ gates.calls.push(input);
19
+ await run({ role: "admin" });
20
+ },
21
+ }));
22
+ const { registerIntakeCommands, buildSetMappingBody, buildListMappingsParams } = await import("./register-intake.js");
23
+ const ID = "3f1c2b1e-6a2a-4a5a-9a1a-2b3c4d5e6f70";
24
+ const BRAND = "33333333-3333-4333-8333-333333333333";
25
+ const T1 = "11111111-1111-4111-8111-111111111111";
26
+ const T2 = "22222222-2222-4222-8222-222222222222";
27
+ function program() {
28
+ const p = new Command();
29
+ p.exitOverride();
30
+ registerIntakeCommands(p);
31
+ return p;
32
+ }
33
+ const run = (...args) => program().parseAsync(["node", "social-hub", "intake", ...args]);
34
+ let logSpy;
35
+ let errSpy;
36
+ let exitSpy;
37
+ beforeEach(() => {
38
+ for (const fn of Object.values(client))
39
+ fn.mockReset().mockResolvedValue({ ok: true });
40
+ gates.calls = [];
41
+ logSpy = vi.spyOn(console, "log").mockImplementation(() => { });
42
+ errSpy = vi.spyOn(console, "error").mockImplementation(() => { });
43
+ exitSpy = vi.spyOn(process, "exit").mockImplementation(((code) => {
44
+ throw new Error(`process.exit(${code})`);
45
+ }));
46
+ });
47
+ afterEach(() => {
48
+ logSpy.mockRestore();
49
+ errSpy.mockRestore();
50
+ exitSpy.mockRestore();
51
+ });
52
+ describe("intake 命令", () => {
53
+ it("list:--mapped pending 与分页透传;系统级 gate + userOnly;不需要 -t", async () => {
54
+ await run("mappings", "list", "--mapped", "pending", "--limit", "20");
55
+ expect(client.listIntakeBrandMappings).toHaveBeenCalledWith({
56
+ mapped: "pending",
57
+ limit: 20,
58
+ });
59
+ expect(gates.calls[0]).toMatchObject({
60
+ gates: [{ resource: "systemIntakeMapping", action: "list" }],
61
+ userOnly: true,
62
+ });
63
+ expect(gates.calls[0]).not.toHaveProperty("teamId");
64
+ });
65
+ it("get / order-team get", async () => {
66
+ await run("mappings", "get", ID);
67
+ expect(client.getIntakeBrandMapping).toHaveBeenCalledWith(ID);
68
+ await run("order-team", "get");
69
+ expect(client.getIntakeOrderTeam).toHaveBeenCalledTimes(1);
70
+ });
71
+ it("set:无 --apply / --dry-run 被拒且不调 SDK;--dry-run 不写;--apply 才写", async () => {
72
+ await expect(run("mappings", "set", ID, "--row-version", "2", "--status", "disabled")).rejects.toThrow("process.exit(1)");
73
+ expect(client.updateIntakeBrandMapping).not.toHaveBeenCalled();
74
+ await run("mappings", "set", ID, "--row-version", "2", "--status", "disabled", "--dry-run");
75
+ expect(client.updateIntakeBrandMapping).not.toHaveBeenCalled();
76
+ await run("mappings", "set", ID, "--row-version", "2", "--brand-id", BRAND, "--team-ids", `${T1}, ${T2}`, "--apply");
77
+ expect(client.updateIntakeBrandMapping).toHaveBeenCalledWith(ID, {
78
+ rowVersion: 2,
79
+ brandId: BRAND,
80
+ eligibleTeamIds: [T1, T2],
81
+ });
82
+ });
83
+ it("order-team set:双闸 + uuid 校验", async () => {
84
+ await expect(run("order-team", "set", "--team-id", T1)).rejects.toThrow("process.exit(1)");
85
+ expect(client.setIntakeOrderTeam).not.toHaveBeenCalled();
86
+ await run("order-team", "set", "--team-id", T1, "--apply");
87
+ expect(client.setIntakeOrderTeam).toHaveBeenCalledWith(T1);
88
+ await expect(run("order-team", "set", "--team-id", "nope", "--apply")).rejects.toBeDefined();
89
+ });
90
+ });
91
+ describe("参数构造", () => {
92
+ it("set:缺 rowVersion / 无变更字段 / 非 uuid 团队 都被拒", () => {
93
+ expect(() => buildSetMappingBody({ status: "active" })).toThrow(/row-version/);
94
+ expect(() => buildSetMappingBody({ rowVersion: "1" })).toThrow(/nothing to change/);
95
+ expect(() => buildSetMappingBody({ rowVersion: "1", teamIds: "x" })).toThrow(/uuid/);
96
+ expect(() => buildSetMappingBody({ rowVersion: "0", status: "active" })).toThrow();
97
+ expect(buildSetMappingBody({ rowVersion: "1", status: "disabled" })).toEqual({
98
+ rowVersion: 1,
99
+ status: "disabled",
100
+ });
101
+ });
102
+ it("list:非法枚举被拒", () => {
103
+ expect(() => buildListMappingsParams({ mapped: "x" })).toThrow();
104
+ expect(() => buildListMappingsParams({ status: "x" })).toThrow();
105
+ expect(buildListMappingsParams({})).toEqual({});
106
+ });
107
+ });
108
+ //# sourceMappingURL=register-intake.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-intake.test.js","sourceRoot":"","sources":["../src/register-intake.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.48",
3
+ "version": "0.3.49",
4
4
  "type": "module",
5
5
  "description": "social-hub CLI for Social Ops Hub",
6
6
  "repository": {
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "commander": "^12.1.0",
25
- "@geoly-ai/social-hub-authz": "0.0.21",
26
- "@geoly-ai/social-hub-sdk": "0.1.19"
25
+ "@geoly-ai/social-hub-authz": "0.0.22",
26
+ "@geoly-ai/social-hub-sdk": "0.1.20"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^22.10.2",
@@ -4,7 +4,7 @@
4
4
  "fileCount": 1658,
5
5
  "files": {
6
6
  "README.md": "5246d4ae2712e3e656b101041929183d7ae7f8ea487dacf5854187826ab7c335",
7
- "manifest.json": "739ba1b87c8ed725d487d2881b925f3315c867d878c5fb056cddb5956cd97eca",
7
+ "manifest.json": "8ff022d58e5f9b2490d2d7c7a73d0495993c025fdaf6085c80e429b385f1b795",
8
8
  "reddit-answers-research/SKILL.md": "8936215363b5b222f4010fd18349cb2c56b473ce659bfeb21116ad5448faa640",
9
9
  "reddit-answers-research/references/browser-playbook.md": "a8f61d3d43ca93d46dadc8a092a515ddcd32df12fb1d08d334cce2e02709d915",
10
10
  "reddit-answers-research/references/report-template.md": "9aa9acf555ba8b2ca503bdbdf5750a5f53c66e19989bf6807fa6200c7317e306",
@@ -1581,7 +1581,7 @@
1581
1581
  "reddit-voc-volume/services/firecrawl/examples/mistral-small-3.1-crawler/mistral-small-3.1-crawler.py": "15e19b60b1a8df3d92f41c280f73584b770612bda8b473f1eb575513776782a0",
1582
1582
  "reddit-voc-volume/services/firecrawl/examples/mistral-small-3.1-extractor/mistral-small-3.1-extractor.py": "b61acfd6a3c95d6a4261aa941d347f6b4a500b89f7897cab4633beb0a2416ba2",
1583
1583
  "reddit-voc-volume/services/firecrawl/examples/o1_job_recommender/o1_job_recommender.py": "bc5f5e477a994ee7dd33636a1158c33875aeee6ef98434e0bd14cc8bc25717eb",
1584
- "reddit-voc-volume/services/firecrawl/examples/o1_web_crawler/o1_web_crawler.py": "aaa56279d8184f519baa45473062502fa316b4e2388265d54cafa62e5cbf2b77",
1584
+ "reddit-voc-volume/services/firecrawl/examples/o1_web_crawler/o1_web_crawler.py": "6280ebd5d8bd25f72e6da1d81fa230ca01b3af23e74a4d1c83a0f5183e66d827",
1585
1585
  "reddit-voc-volume/services/firecrawl/examples/o1_web_extractor/o1_web_extractor.py": "fcd9558a391add78cd3132cccc30496fbe1bcf24c7dd0f506fc01635aa5eece7",
1586
1586
  "reddit-voc-volume/services/firecrawl/examples/o3-mini-deal-finder/o3-mini-deal-finder.py": "b0319c65a20e06f5d55f614553c6abbba60f761d0271600b826ab7c3242a5bbc",
1587
1587
  "reddit-voc-volume/services/firecrawl/examples/o3-mini_company_researcher/o3-mini_company_researcher.py": "8aada7f6813e6e39993fdf5b9bedd5bda16015e03e3d851ca5912b4de9b6829c",
@@ -1636,7 +1636,7 @@
1636
1636
  "reddit-voc-volume/tests/test_links_fallback.py": "0f9e91e4f7721d6c8f63dc2e98f20d0aeaa82d497a780054ae0096150ac8d861",
1637
1637
  "reddit-voc-volume/tests/test_no_direct_reddit.py": "5f6764a92f0579eb3322ffcdf29db5351a4d5c38278ab923a1439b5e0a9be45a",
1638
1638
  "social-hub-accounts/SKILL.md": "096f7969f572a0cecbf244d814ba43422b8b556a98b751dc1ece7f9066864e4d",
1639
- "social-hub-admin/SKILL.md": "bce961e34268c736df5bc92e5b9edfdd98393d19dc2122f388112e4250e1102d",
1639
+ "social-hub-admin/SKILL.md": "e227a5d73a113a596231fc6fcaf53df39b10f597361d5e1849576167ed4fa48e",
1640
1640
  "social-hub-calendar-directives/SKILL.md": "27f82cd33c14bc6a51282f59560930f1600d48cb7df1a308505c457b2777ad6f",
1641
1641
  "social-hub-calendar-jobs/SKILL.md": "b79287c9e2dcb541518d5930c5fbf54fe81d17034a0406ca77cd2266afcbf943",
1642
1642
  "social-hub-cli/SKILL.md": "17211c1347c1e985aec132247c050ccaeb126234ef211d33ee873a8394caed2e",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 1,
3
3
  "package": "social-ops-hub",
4
- "cliVersion": "0.3.48",
4
+ "cliVersion": "0.3.49",
5
5
  "repository": "social-ops-hub",
6
6
  "publish": {
7
7
  "registry": "https://skill.sh",