@geoly-ai/social-hub-cli 0.0.1

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 (65) hide show
  1. package/dist/client.d.ts +5 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +23 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.d.ts +24 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +96 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/config.test.d.ts +2 -0
  10. package/dist/config.test.d.ts.map +1 -0
  11. package/dist/config.test.js +13 -0
  12. package/dist/config.test.js.map +1 -0
  13. package/dist/context-state.d.ts +9 -0
  14. package/dist/context-state.d.ts.map +1 -0
  15. package/dist/context-state.js +29 -0
  16. package/dist/context-state.js.map +1 -0
  17. package/dist/dry-run.d.ts +12 -0
  18. package/dist/dry-run.d.ts.map +1 -0
  19. package/dist/dry-run.js +18 -0
  20. package/dist/dry-run.js.map +1 -0
  21. package/dist/dry-run.test.d.ts +2 -0
  22. package/dist/dry-run.test.d.ts.map +1 -0
  23. package/dist/dry-run.test.js +21 -0
  24. package/dist/dry-run.test.js.map +1 -0
  25. package/dist/index.d.ts +5 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +1342 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/index.test.d.ts +2 -0
  30. package/dist/index.test.d.ts.map +1 -0
  31. package/dist/index.test.js +303 -0
  32. package/dist/index.test.js.map +1 -0
  33. package/dist/output.d.ts +9 -0
  34. package/dist/output.d.ts.map +1 -0
  35. package/dist/output.js +75 -0
  36. package/dist/output.js.map +1 -0
  37. package/dist/permissions.d.ts +32 -0
  38. package/dist/permissions.d.ts.map +1 -0
  39. package/dist/permissions.js +101 -0
  40. package/dist/permissions.js.map +1 -0
  41. package/dist/permissions.test.d.ts +2 -0
  42. package/dist/permissions.test.d.ts.map +1 -0
  43. package/dist/permissions.test.js +17 -0
  44. package/dist/permissions.test.js.map +1 -0
  45. package/dist/register-admin.d.ts +3 -0
  46. package/dist/register-admin.d.ts.map +1 -0
  47. package/dist/register-admin.js +100 -0
  48. package/dist/register-admin.js.map +1 -0
  49. package/dist/register-batch.d.ts +3 -0
  50. package/dist/register-batch.d.ts.map +1 -0
  51. package/dist/register-batch.js +85 -0
  52. package/dist/register-batch.js.map +1 -0
  53. package/dist/register-extensions.d.ts +9 -0
  54. package/dist/register-extensions.d.ts.map +1 -0
  55. package/dist/register-extensions.js +550 -0
  56. package/dist/register-extensions.js.map +1 -0
  57. package/dist/register-ops.d.ts +4 -0
  58. package/dist/register-ops.d.ts.map +1 -0
  59. package/dist/register-ops.js +152 -0
  60. package/dist/register-ops.js.map +1 -0
  61. package/dist/register-shared.d.ts +3 -0
  62. package/dist/register-shared.d.ts.map +1 -0
  63. package/dist/register-shared.js +145 -0
  64. package/dist/register-shared.js.map +1 -0
  65. package/package.json +35 -0
@@ -0,0 +1,152 @@
1
+ import { requireClient, resolveTeamId } from "./client.js";
2
+ import { parseJsonOption, printResult, withCliErrorBoundary } from "./output.js";
3
+ export function registerOpsRuntime(program) {
4
+ const ops = program.command("ops").description("OpenClaw Agent 任务运行时");
5
+ const agentOpt = ["--agent <agentId>", "Agent 标识"];
6
+ ops
7
+ .command("claim-next")
8
+ .description("领取下一条可执行任务")
9
+ .requiredOption("-t, --team <teamId>", "Team UUID")
10
+ .option(...agentOpt)
11
+ .option("--account <socialAccountId>", "限定账号")
12
+ .option("--lease-seconds <n>", "租约秒数", "300")
13
+ .action(async (opts) => {
14
+ await withCliErrorBoundary(async () => {
15
+ const teamId = resolveTeamId(opts.team);
16
+ const res = await requireClient().opsClaimNext(teamId, {
17
+ agentId: opts.agent,
18
+ socialAccountId: opts.account,
19
+ leaseSeconds: Number(opts.leaseSeconds),
20
+ });
21
+ printResult(res);
22
+ });
23
+ });
24
+ ops
25
+ .command("claim")
26
+ .description("领取指定任务")
27
+ .requiredOption("-t, --team <teamId>", "Team UUID")
28
+ .requiredOption("--job <jobId>", "Scheduled job UUID")
29
+ .option(...agentOpt)
30
+ .option("--lease-seconds <n>", "租约秒数", "300")
31
+ .action(async (opts) => {
32
+ await withCliErrorBoundary(async () => {
33
+ const teamId = resolveTeamId(opts.team);
34
+ const res = await requireClient().opsClaim(teamId, {
35
+ agentId: opts.agent,
36
+ jobId: opts.job,
37
+ leaseSeconds: Number(opts.leaseSeconds),
38
+ });
39
+ printResult(res);
40
+ });
41
+ });
42
+ ops
43
+ .command("heartbeat")
44
+ .requiredOption("-t, --team <teamId>", "Team UUID")
45
+ .requiredOption("--job <jobId>", "Job UUID")
46
+ .option(...agentOpt)
47
+ .action(async (opts) => {
48
+ await withCliErrorBoundary(async () => {
49
+ const teamId = resolveTeamId(opts.team);
50
+ const res = await requireClient().opsHeartbeat(teamId, {
51
+ agentId: opts.agent,
52
+ jobId: opts.job,
53
+ });
54
+ printResult(res);
55
+ });
56
+ });
57
+ ops
58
+ .command("complete")
59
+ .requiredOption("-t, --team <teamId>", "Team UUID")
60
+ .requiredOption("--job <jobId>", "Job UUID")
61
+ .option(...agentOpt)
62
+ .option("--permalink <url>", "Reddit permalink")
63
+ .option("-j, --json <json>", "附加结果 JSON", "{}")
64
+ .action(async (opts) => {
65
+ await withCliErrorBoundary(async () => {
66
+ const teamId = resolveTeamId(opts.team);
67
+ const res = await requireClient().opsComplete(teamId, {
68
+ agentId: opts.agent,
69
+ jobId: opts.job,
70
+ permalink: opts.permalink,
71
+ payload: parseJsonOption(opts.json),
72
+ });
73
+ printResult(res);
74
+ });
75
+ });
76
+ ops
77
+ .command("fail")
78
+ .requiredOption("-t, --team <teamId>", "Team UUID")
79
+ .requiredOption("--job <jobId>", "Job UUID")
80
+ .requiredOption("--reason <code>", "标准失败原因枚举")
81
+ .option(...agentOpt)
82
+ .option("--message <text>", "详情")
83
+ .action(async (opts) => {
84
+ await withCliErrorBoundary(async () => {
85
+ const teamId = resolveTeamId(opts.team);
86
+ const res = await requireClient().opsFail(teamId, {
87
+ agentId: opts.agent,
88
+ jobId: opts.job,
89
+ reason: opts.reason,
90
+ message: opts.message,
91
+ });
92
+ printResult(res);
93
+ });
94
+ });
95
+ ops
96
+ .command("skip")
97
+ .requiredOption("-t, --team <teamId>", "Team UUID")
98
+ .requiredOption("--job <jobId>", "Job UUID")
99
+ .requiredOption("--reason <code>", "标准跳过原因枚举")
100
+ .option(...agentOpt)
101
+ .option("--message <text>", "详情")
102
+ .action(async (opts) => {
103
+ await withCliErrorBoundary(async () => {
104
+ const teamId = resolveTeamId(opts.team);
105
+ const res = await requireClient().opsSkip(teamId, {
106
+ agentId: opts.agent,
107
+ jobId: opts.job,
108
+ reason: opts.reason,
109
+ message: opts.message,
110
+ });
111
+ printResult(res);
112
+ });
113
+ });
114
+ }
115
+ export function registerAgentContext(program) {
116
+ const query = program.command("query").description("Agent 结构化查询");
117
+ query
118
+ .command("account-pools")
119
+ .requiredOption("-t, --team <teamId>", "Team UUID")
120
+ .requiredOption("--account <ref>", "账号 UUID 或 handle")
121
+ .option("--industry <key>", "行业 key")
122
+ .option("--limit <n>", "条数", "50")
123
+ .action(async (opts) => {
124
+ await withCliErrorBoundary(async () => {
125
+ const teamId = resolveTeamId(opts.team);
126
+ const res = await requireClient().listAccountPools(teamId, opts.account, {
127
+ industry: opts.industry,
128
+ limit: Number(opts.limit),
129
+ });
130
+ printResult(res);
131
+ });
132
+ });
133
+ query
134
+ .command("subreddit-candidates")
135
+ .requiredOption("-t, --team <teamId>", "Team UUID")
136
+ .requiredOption("--account <ref>", "账号 UUID 或 handle")
137
+ .option("--industry <key>", "行业 key")
138
+ .option("--action <action>", "动作类型")
139
+ .option("--limit <n>", "条数", "30")
140
+ .action(async (opts) => {
141
+ await withCliErrorBoundary(async () => {
142
+ const teamId = resolveTeamId(opts.team);
143
+ const res = await requireClient().listSubredditCandidates(teamId, opts.account, {
144
+ industry: opts.industry,
145
+ action: opts.action,
146
+ limit: Number(opts.limit),
147
+ });
148
+ printResult(res);
149
+ });
150
+ });
151
+ }
152
+ //# sourceMappingURL=register-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-ops.js","sourceRoot":"","sources":["../src/register-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDoctorAndVersion(program: Command): void;
3
+ //# sourceMappingURL=register-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-shared.d.ts","sourceRoot":"","sources":["../src/register-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJ/D"}
@@ -0,0 +1,145 @@
1
+ import { getSocialHubHealth, getSocialHubHealthLive, } from "@geoly-ai/social-hub-sdk";
2
+ import { getBaseUrl, requireClient, resolveTeamId } from "./client.js";
3
+ import { loadConfigFile, maskSecret, resolveCliConfig, } from "./config.js";
4
+ import { loadContextState, resolveEffectiveTeamId, saveContextState, } from "./context-state.js";
5
+ import { printResult, withCliErrorBoundary } from "./output.js";
6
+ const CLI_VERSION = "0.0.1";
7
+ const SDK_VERSION = "0.0.1";
8
+ const CONTRACTS_VERSION = "0.0.1";
9
+ export function registerDoctorAndVersion(program) {
10
+ program
11
+ .command("doctor")
12
+ .description("检查 API、配置、鉴权与权限")
13
+ .option("--json", "JSON 输出", false)
14
+ .action(async () => {
15
+ await withCliErrorBoundary(async () => {
16
+ const baseUrl = getBaseUrl();
17
+ const resolved = resolveCliConfig();
18
+ const checks = {
19
+ configPath: resolved,
20
+ apiUrl: baseUrl,
21
+ apiKey: resolved.apiKey ? "set" : "missing",
22
+ teamId: resolveEffectiveTeamId() ?? "missing",
23
+ };
24
+ try {
25
+ checks.health = await getSocialHubHealth(baseUrl);
26
+ }
27
+ catch (e) {
28
+ checks.health = {
29
+ ok: false,
30
+ error: e instanceof Error ? e.message : String(e),
31
+ };
32
+ }
33
+ try {
34
+ checks.healthLive = await getSocialHubHealthLive(baseUrl);
35
+ }
36
+ catch (e) {
37
+ checks.healthLive = {
38
+ ok: false,
39
+ error: e instanceof Error ? e.message : String(e),
40
+ };
41
+ }
42
+ if (resolved.apiKey) {
43
+ try {
44
+ const ctx = await requireClient().getAuthContext();
45
+ checks.authContext = {
46
+ ok: true,
47
+ role: ctx.role,
48
+ teamId: ctx.teamId,
49
+ };
50
+ }
51
+ catch (e) {
52
+ checks.authContext = {
53
+ ok: false,
54
+ error: e instanceof Error ? e.message : String(e),
55
+ };
56
+ }
57
+ }
58
+ const ok = checks.health?.ok !== false &&
59
+ checks.healthLive?.ok !== false &&
60
+ Boolean(resolved.apiKey);
61
+ printResult({ ok, checks });
62
+ if (!ok)
63
+ process.exit(1);
64
+ });
65
+ });
66
+ program
67
+ .command("version")
68
+ .description("CLI / SDK / contracts 版本")
69
+ .option("--json", "JSON 输出", true)
70
+ .action(() => {
71
+ printResult({
72
+ cliVersion: CLI_VERSION,
73
+ sdkVersion: SDK_VERSION,
74
+ contractsVersion: CONTRACTS_VERSION,
75
+ apiUrl: getBaseUrl(),
76
+ });
77
+ });
78
+ const ctx = program
79
+ .command("context")
80
+ .description("CLI 默认 team 上下文");
81
+ ctx
82
+ .command("list")
83
+ .description("列出可用 team 上下文")
84
+ .action(async () => {
85
+ await withCliErrorBoundary(async () => {
86
+ const file = loadConfigFile();
87
+ const state = loadContextState();
88
+ const auth = await requireClient().getAuthContext();
89
+ printResult({
90
+ current: state.currentTeamId ?? file.teamId ?? null,
91
+ authTeamId: auth.teamId,
92
+ visibleTeamIds: auth.visibleTeamIds,
93
+ });
94
+ });
95
+ });
96
+ ctx
97
+ .command("use")
98
+ .argument("<teamId>", "Team UUID")
99
+ .option("--label <label>", "可读标签")
100
+ .action((teamId, opts) => {
101
+ saveContextState({
102
+ currentTeamId: teamId.trim(),
103
+ label: opts.label,
104
+ });
105
+ printResult({ ok: true, currentTeamId: teamId.trim() });
106
+ });
107
+ ctx
108
+ .command("current")
109
+ .description("当前 team 上下文")
110
+ .action(() => {
111
+ const state = loadContextState();
112
+ const file = loadConfigFile();
113
+ printResult({
114
+ currentTeamId: state.currentTeamId ?? file.teamId ?? null,
115
+ label: state.label ?? null,
116
+ apiKey: maskSecret(resolveCliConfig().apiKey),
117
+ });
118
+ });
119
+ ctx
120
+ .command("account")
121
+ .description("账号 Agent 上下文(DB 聚合)")
122
+ .requiredOption("-t, --team <teamId>", "Team UUID")
123
+ .requiredOption("--account <ref>", "账号 UUID 或 handle")
124
+ .option("--expand <list>", "pools,jobs,persona,risk,env,events,guardrails")
125
+ .action(async (opts) => {
126
+ await withCliErrorBoundary(async () => {
127
+ const teamId = resolveTeamId(opts.team);
128
+ const res = await requireClient().getAccountAgentContext(teamId, opts.account, { expand: opts.expand });
129
+ printResult(res);
130
+ });
131
+ });
132
+ ctx
133
+ .command("job")
134
+ .description("任务 Agent 上下文")
135
+ .requiredOption("-t, --team <teamId>", "Team UUID")
136
+ .requiredOption("--job <jobId>", "Scheduled job UUID")
137
+ .action(async (opts) => {
138
+ await withCliErrorBoundary(async () => {
139
+ const teamId = resolveTeamId(opts.team);
140
+ const res = await requireClient().getJobAgentContext(teamId, opts.job);
141
+ printResult(res);
142
+ });
143
+ });
144
+ }
145
+ //# sourceMappingURL=register-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-shared.js","sourceRoot":"","sources":["../src/register-shared.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC;SAClC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,oBAAoB,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YACpC,MAAM,MAAM,GAA4B;gBACtC,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC3C,MAAM,EAAE,sBAAsB,EAAE,IAAI,SAAS;aAC9C,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,CAAC,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,GAAG;oBACd,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,CAAC,UAAU,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,UAAU,GAAG;oBAClB,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,CAAC;oBACnD,MAAM,CAAC,WAAW,GAAG;wBACnB,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;qBACnB,CAAC;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,WAAW,GAAG;wBACnB,EAAE,EAAE,KAAK;wBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,EAAE,GACL,MAAM,CAAC,MAA2B,EAAE,EAAE,KAAK,KAAK;gBAChD,MAAM,CAAC,UAA+B,EAAE,EAAE,KAAK,KAAK;gBACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE3B,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;SACjC,MAAM,CAAC,GAAG,EAAE;QACX,WAAW,CAAC;YACV,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE,iBAAiB;YACnC,MAAM,EAAE,UAAU,EAAE;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAElC,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,oBAAoB,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,CAAC;YACpD,WAAW,CAAC;gBACV,OAAO,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;gBACnD,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;SACjC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACjC,MAAM,CAAC,CAAC,MAAc,EAAE,IAAwB,EAAE,EAAE;QACnD,gBAAgB,CAAC;YACf,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,WAAW,CAAC;YACV,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YACzD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,MAAM,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qBAAqB,CAAC;SAClC,cAAc,CAAC,qBAAqB,EAAE,WAAW,CAAC;SAClD,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SACrD,MAAM,CACL,iBAAiB,EACjB,+CAA+C,CAChD;SACA,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,oBAAoB,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC,sBAAsB,CACtD,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,cAAc,CAAC;SAC3B,cAAc,CAAC,qBAAqB,EAAE,WAAW,CAAC;SAClD,cAAc,CAAC,eAAe,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,oBAAoB,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACvE,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@geoly-ai/social-hub-cli",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "description": "social-hub CLI for Social Ops Hub",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/geoly-ai/geoly-reddit.git",
9
+ "directory": "packages/cli"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "bin": {
18
+ "social-hub": "./dist/index.js"
19
+ },
20
+ "dependencies": {
21
+ "commander": "^12.1.0",
22
+ "@geoly-ai/social-hub-authz": "0.0.1",
23
+ "@geoly-ai/social-hub-sdk": "0.0.1"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^22.10.2",
27
+ "typescript": "^5.7.2",
28
+ "vitest": "^2.1.8"
29
+ },
30
+ "scripts": {
31
+ "build": "tsc",
32
+ "typecheck": "tsc --noEmit",
33
+ "test": "vitest run"
34
+ }
35
+ }