@geoly-ai/social-hub-cli 0.1.9 → 0.1.11

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 (105) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/dist/cmd-manifest.json +2 -2
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/config.test.js +4 -1
  7. package/dist/config.test.js.map +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +41 -16
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.test.js +7 -1
  12. package/dist/index.test.js.map +1 -1
  13. package/dist/output.d.ts.map +1 -1
  14. package/dist/output.js.map +1 -1
  15. package/dist/permissions-gates-admin.d.ts.map +1 -1
  16. package/dist/permissions-gates-admin.js +35 -7
  17. package/dist/permissions-gates-admin.js.map +1 -1
  18. package/dist/permissions.d.ts.map +1 -1
  19. package/dist/permissions.js +5 -1
  20. package/dist/permissions.js.map +1 -1
  21. package/dist/permissions.test.js +1 -1
  22. package/dist/permissions.test.js.map +1 -1
  23. package/dist/register-admin.d.ts.map +1 -1
  24. package/dist/register-admin.js +1 -3
  25. package/dist/register-admin.js.map +1 -1
  26. package/dist/register-batch.d.ts.map +1 -1
  27. package/dist/register-batch.js +1 -1
  28. package/dist/register-batch.js.map +1 -1
  29. package/dist/register-extensions.d.ts.map +1 -1
  30. package/dist/register-extensions.js +8 -2
  31. package/dist/register-extensions.js.map +1 -1
  32. package/dist/register-shared.d.ts.map +1 -1
  33. package/dist/register-shared.js +2 -4
  34. package/dist/register-shared.js.map +1 -1
  35. package/dist/register-skills.d.ts +26 -0
  36. package/dist/register-skills.d.ts.map +1 -1
  37. package/dist/register-skills.js +41 -14
  38. package/dist/register-skills.js.map +1 -1
  39. package/dist/register-skills.test.d.ts +2 -0
  40. package/dist/register-skills.test.d.ts.map +1 -0
  41. package/dist/register-skills.test.js +15 -0
  42. package/dist/register-skills.test.js.map +1 -0
  43. package/dist/skills/doctor.d.ts.map +1 -1
  44. package/dist/skills/doctor.js +3 -3
  45. package/dist/skills/doctor.js.map +1 -1
  46. package/dist/skills/github-source.d.ts.map +1 -1
  47. package/dist/skills/github-source.js +10 -3
  48. package/dist/skills/github-source.js.map +1 -1
  49. package/dist/skills/install-planner.d.ts.map +1 -1
  50. package/dist/skills/install-planner.js +8 -2
  51. package/dist/skills/install-planner.js.map +1 -1
  52. package/dist/skills/installer.d.ts.map +1 -1
  53. package/dist/skills/installer.js +3 -2
  54. package/dist/skills/installer.js.map +1 -1
  55. package/dist/skills/manifest.d.ts.map +1 -1
  56. package/dist/skills/manifest.js.map +1 -1
  57. package/dist/skills/marketplace-adapters/claude-plugin.d.ts.map +1 -1
  58. package/dist/skills/marketplace-adapters/claude-plugin.js.map +1 -1
  59. package/dist/skills/marketplace-adapters/skills-sh.d.ts.map +1 -1
  60. package/dist/skills/marketplace-adapters/skills-sh.js +1 -1
  61. package/dist/skills/marketplace-adapters/skills-sh.js.map +1 -1
  62. package/dist/skills/prompt-state.d.ts +56 -0
  63. package/dist/skills/prompt-state.d.ts.map +1 -0
  64. package/dist/skills/prompt-state.js +182 -0
  65. package/dist/skills/prompt-state.js.map +1 -0
  66. package/dist/skills/prompt-state.test.d.ts +2 -0
  67. package/dist/skills/prompt-state.test.d.ts.map +1 -0
  68. package/dist/skills/prompt-state.test.js +172 -0
  69. package/dist/skills/prompt-state.test.js.map +1 -0
  70. package/dist/skills/prompt.d.ts +23 -0
  71. package/dist/skills/prompt.d.ts.map +1 -0
  72. package/dist/skills/prompt.js +92 -0
  73. package/dist/skills/prompt.js.map +1 -0
  74. package/dist/skills/prompt.test.d.ts +2 -0
  75. package/dist/skills/prompt.test.d.ts.map +1 -0
  76. package/dist/skills/prompt.test.js +98 -0
  77. package/dist/skills/prompt.test.js.map +1 -0
  78. package/dist/skills/source-resolver.d.ts.map +1 -1
  79. package/dist/skills/source-resolver.js +6 -3
  80. package/dist/skills/source-resolver.js.map +1 -1
  81. package/dist/skills/state-store.d.ts.map +1 -1
  82. package/dist/skills/state-store.js.map +1 -1
  83. package/dist/skills/target-detector.d.ts.map +1 -1
  84. package/dist/skills/target-detector.js +3 -1
  85. package/dist/skills/target-detector.js.map +1 -1
  86. package/dist/skills/target-detector.test.js +3 -1
  87. package/dist/skills/target-detector.test.js.map +1 -1
  88. package/dist/skills/tui.d.ts +3 -0
  89. package/dist/skills/tui.d.ts.map +1 -1
  90. package/dist/skills/tui.js +79 -23
  91. package/dist/skills/tui.js.map +1 -1
  92. package/dist/skills/tui.test.js +10 -2
  93. package/dist/skills/tui.test.js.map +1 -1
  94. package/dist/update-check.d.ts.map +1 -1
  95. package/dist/update-check.js.map +1 -1
  96. package/dist/update-check.test.js.map +1 -1
  97. package/package.json +2 -2
  98. package/skills/manifest.json +1 -1
  99. package/skills/social-hub-accounts/SKILL.md +4 -4
  100. package/skills/social-hub-cli/evals/evals.json +4 -1
  101. package/skills/social-hub-events-observability/SKILL.md +4 -4
  102. package/skills/social-hub-intelligence/SKILL.md +34 -3
  103. package/skills/social-hub-openclaw-context/SKILL.md +1 -1
  104. package/skills/social-hub-posts/SKILL.md +5 -0
  105. package/skills/social-hub-shared/SKILL.md +28 -28
package/CHANGELOG.md CHANGED
@@ -4,9 +4,32 @@ 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.1.11] - 2026-06-11
8
+
9
+ ### Added
10
+ - hybrid arrow-key + typed-number prompts for skills installer
11
+
12
+ ### Fixed
13
+ - repair stale e2e/unit tests, prune dead code, harden intelligence page
14
+
15
+ ### Changed
16
+ - style: apply prettier across the repository
17
+ ## [0.1.10] - 2026-06-09
18
+
19
+ Normalize reddit post opsStatus filters; align stats filters; update social-hub-posts skill and reddit stats CLI options.
20
+
21
+ ### Added
22
+
23
+ - improve refresh fallback routing and post performance UX
24
+
25
+ ### Fixed
26
+
27
+ - normalize opsStatus filters and align stats query scope
28
+
7
29
  ## [0.1.9] - 2026-06-08
8
30
 
9
31
  ### Added
32
+
10
33
  - systematize hub ingest and runtime gates
11
34
  - add persona pool alias seeding
12
35
  - Hub-first ops runtime, style-curator skill, and post list UX
@@ -21,16 +44,21 @@ Release workflow: `pnpm release:cli` → `pnpm publish:cli`.
21
44
  - add system persona library and account personaId linking
22
45
 
23
46
  ### Fixed
47
+
24
48
  - auto-detect managed dirs for skills update/remove
25
49
 
26
50
  ### Changed
51
+
27
52
  - close admin gap with db/api/e2e coverage
53
+
28
54
  ## [0.1.8] - 2026-06-05
29
55
 
30
56
  Bundle updated Social Hub subreddit pool skills and persona pool alias guidance.
57
+
31
58
  ## [0.1.7] - 2026-06-04
32
59
 
33
60
  ### Added
61
+
34
62
  - Hub-first ops runtime, style-curator skill, and post list UX
35
63
  - complete repost link support
36
64
  - brand-first publishing scope, persona-aware pools, cli update check
@@ -44,15 +72,19 @@ Bundle updated Social Hub subreddit pool skills and persona pool alias guidance.
44
72
  - reddit --aggregate/--all 分页,stats --range 365|all;SDK 补聚合与 offset 参数
45
73
 
46
74
  ### Fixed
75
+
47
76
  - auto-detect managed dirs for skills update/remove
48
77
 
49
78
  ### Changed
79
+
50
80
  - close admin gap with db/api/e2e coverage
81
+
51
82
  ## [0.1.6] - 2026-06-04
52
83
 
53
84
  Post Performance repost-link fields and CLI skill/help alignment.
54
85
 
55
86
  ### Added
87
+
56
88
  - `reddit create-snapshot`, `reddit update`, and `reddit batch-upsert` help examples now document `firstRepostLink` / `secondRepostLink`.
57
89
  - bundled `social-hub-posts` skill documents repost-link create/update/batch-upsert payloads.
58
90
 
@@ -61,6 +93,7 @@ Post Performance repost-link fields and CLI skill/help alignment.
61
93
  npm registry update check with agent upgrade hints; brand-first and persona-aware bundled skills.
62
94
 
63
95
  ### Added
96
+
64
97
  - brand-first publishing scope, persona-aware pools, cli update check
65
98
  - persona-aware subreddit candidates and diversity selection
66
99
  - extend system library fields and import dataset
@@ -74,15 +107,19 @@ npm registry update check with agent upgrade hints; brand-first and persona-awar
74
107
  - team subreddit blocklists and style-mark CLI set
75
108
 
76
109
  ### Fixed
110
+
77
111
  - auto-detect managed dirs for skills update/remove
112
+
78
113
  ## [0.1.4] - 2026-06-03
79
114
 
80
115
  Persona-aware pool queries (--persona-aware, --tier, --include-debug), updated openclaw-context CLI skill, and subreddit candidate diversity fields.
116
+
81
117
  ## [0.1.3] - 2026-06-03
82
118
 
83
119
  Persona library list filters and import
84
120
 
85
121
  ### Added
122
+
86
123
  - extend system library fields and import dataset
87
124
  - server-side filters, refresh run logs, CLI/SDK sync
88
125
  - sanctions update/delete and blocklist UI on RiskCenter
@@ -96,12 +133,15 @@ Persona library list filters and import
96
133
  - extend events append CLI flags and interaction flow
97
134
 
98
135
  ### Fixed
136
+
99
137
  - auto-detect managed dirs for skills update/remove
138
+
100
139
  ## [0.1.2] - 2026-06-02
101
140
 
102
141
  Reddit post snapshot filters, refresh execution logs, and `containsBrandKeyword` field docs.
103
142
 
104
143
  ### Added
144
+
105
145
  - `reddit refresh-logs` — GET `/reddit-post-snapshots/refresh-logs` (cron + manual refresh run history)
106
146
  - `reddit list` query params: `--ops-status`, `--post-type`, `--contains-brand-keyword`, `--primary-product`
107
147
  - SDK `batchUpsertRedditPostSnapshotsByPermalink` item type includes `containsBrandKeyword`
@@ -112,6 +152,7 @@ Reddit post snapshot filters, refresh execution logs, and `containsBrandKeyword`
112
152
  Subreddit sanctions lifecycle: update and delete.
113
153
 
114
154
  ### Added
155
+
115
156
  - `compliance sanctions-update` — PATCH `/subreddit-sanctions/:id` (status/reason/expiresAt)
116
157
  - `compliance sanctions-delete` — DELETE `/subreddit-sanctions/:id`
117
158
 
@@ -120,6 +161,7 @@ Subreddit sanctions lifecycle: update and delete.
120
161
  Subreddit blocklists are now **system-level** (`/v1/system/subreddit-blocklists`); shared across all teams. CLI `compliance blocklists-*` no longer requires `-t` (passing `-t` prints a deprecation warning and is ignored).
121
162
 
122
163
  ### Changed
164
+
123
165
  - blocklists moved from team-scoped to system-scoped API, SDK, and CLI
124
166
  - guardrails and agent-context read system blocklists (no per-team duplication)
125
167
 
@@ -128,34 +170,46 @@ Subreddit blocklists are now **system-level** (`/v1/system/subreddit-blocklists`
128
170
  Status-snapshot externalRef idempotency; CLI cmd manifest export; social-hub-accounts skill docs.
129
171
 
130
172
  ### Added
173
+
131
174
  - status-snapshot externalRef idempotency and CLI cmd manifest
175
+
132
176
  ## [0.0.21] - 2026-06-02
133
177
 
134
- System persona library: personas system-* commands and accounts --persona/--category filters.
178
+ System persona library: personas system-\* commands and accounts --persona/--category filters.
135
179
 
136
180
  ### Added
181
+
137
182
  - add system persona library and account personaId linking
183
+
138
184
  ## [0.0.20] - 2026-06-01
139
185
 
140
186
  ### Fixed
187
+
141
188
  - auto-detect managed dirs for skills update/remove
189
+
142
190
  ## [0.0.19] - 2026-06-01
143
191
 
144
192
  ### Added
193
+
145
194
  - reddit --aggregate/--all 分页,stats --range 365|all;SDK 补聚合与 offset 参数
195
+
146
196
  ## [0.0.18] - 2026-06-01
147
197
 
148
198
  ### Added
199
+
149
200
  - reddit list/list-full/stats 支持 --brand;SDK 增加 brandId;skills 对齐系统级品牌
150
201
  - team subreddit blocklists and style-mark CLI set
202
+
151
203
  ## [0.0.17] - 2026-06-01
152
204
 
153
205
  feat: subreddit blocklists + style-mark external upsert
206
+
154
207
  ## [0.0.16] - 2026-05-29
155
208
 
156
209
  Bundled skill docs aligned with Hub-first CLI syntax; browser-env telemetry and ops runtime extensions.
157
210
 
158
211
  ### Added
212
+
159
213
  - hub runtime readiness, bundled skills sync, and skill doc alignment
160
214
  - extend events append CLI flags and interaction flow
161
215
  - harden OpenClaw interaction flow
@@ -165,24 +219,29 @@ Bundled skill docs aligned with Hub-first CLI syntax; browser-env telemetry and
165
219
  - add reddit batch-upsert and drop import-feishu command
166
220
 
167
221
  ### Fixed
222
+
168
223
  - upsert feishu snapshots by feishuRecordId
169
224
  - default apiUrl to production Social Ops Hub
170
225
  - parse conventional commit subjects for CHANGELOG
171
226
  - default skills install to TUI with CLI prefill
172
227
 
173
228
  ### Changed
229
+
174
230
  - automate CLI versioning and CHANGELOG
175
231
  - add publish:cli script for single-package npm publish
232
+
176
233
  ## [0.0.15] - 2026-05-28
177
234
 
178
235
  Hub runtime readiness: authz evaluate resource/action, expanded permission gates, bundled skills sync on publish.
179
236
 
180
237
  ### Added
238
+
181
239
  - `authz evaluate --resource` / `--action` for runtime preflight checks
182
240
  - Permission gates for ops runtime, browser-envs, and personas commands
183
241
  - Bundled skills sync and freshness verification before CLI publish
184
242
 
185
243
  ### Fixed
244
+
186
245
  - `authz evaluate` permission gate uses `task:read` instead of manager-only `apiKey:list`
187
246
  - Bundled skill docs aligned with Hub-first CLI syntax
188
247
 
@@ -191,48 +250,63 @@ Hub runtime readiness: authz evaluate resource/action, expanded permission gates
191
250
  OpenClaw Hub-first interaction flow: events append flags, style-marks/curator CLI, SDK 0.0.7
192
251
 
193
252
  ### Added
253
+
194
254
  - extend events append CLI flags and interaction flow
195
255
  - harden OpenClaw interaction flow
256
+
196
257
  ## [0.0.13] - 2026-05-22
197
258
 
198
259
  Graph v2, compliance rule caches, intelligence CLI extensions, and modular agent skills (13 skills).
199
260
 
200
261
  ### Added
262
+
201
263
  - add graph v2, intelligence extensions, modular skills
202
264
 
203
265
  ### Fixed
266
+
204
267
  - upsert feishu snapshots by feishuRecordId
268
+
205
269
  ## [0.0.12] - 2026-05-22
206
270
 
207
271
  Add system brands and brand-members commands; depends on @geoly-ai/social-hub-sdk@0.0.5.
208
272
 
209
273
  ### Added
274
+
210
275
  - add system brands and brand-members commands
276
+
211
277
  ## [0.0.11] - 2026-05-21
212
278
 
213
279
  Support never duration and permission-matrix duration options
214
280
 
215
281
  ### Added
282
+
216
283
  - granular CLI token duration permissions via matrix
217
284
 
218
285
  ### Fixed
286
+
219
287
  - default apiUrl to production Social Ops Hub
288
+
220
289
  ## [0.0.10] - 2026-05-21
221
290
 
222
291
  Default CLI apiUrl to production Social Ops Hub (https://reddit.eclick-geo.com/api).
292
+
223
293
  ## [0.0.9] - 2026-05-21
224
294
 
225
295
  Remove reddit import-feishu; add reddit batch-upsert for Feishu-to-Hub sync via local lark-cli.
226
296
 
227
297
  ### Added
298
+
228
299
  - add reddit batch-upsert and drop import-feishu command
229
300
 
230
301
  ### Fixed
302
+
231
303
  - parse conventional commit subjects for CHANGELOG
232
304
 
233
305
  ### Changed
306
+
234
307
  - automate CLI versioning and CHANGELOG
235
308
  - add publish:cli script for single-package npm publish
309
+
236
310
  ## [0.0.8] - 2026-05-21
237
311
 
238
312
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
- "generatedAt": "2026-06-08T07:03:17.991Z",
3
- "cliVersion": "0.1.9",
2
+ "generatedAt": "2026-06-11T02:23:35.717Z",
3
+ "cliVersion": "0.1.11",
4
4
  "commands": [
5
5
  "accounts",
6
6
  "accounts brand-bindings",
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAOnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,IAAI,kBAAkB,CAenD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAY/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,SAAI,GAAG,MAAM,CAIzE;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE;QAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACnH,CAoCA;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,kBAAkB,CAWpB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAOnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,IAAI,kBAAkB,CAenD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAY/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,SAAI,GAAG,MAAM,CAIzE;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE;QACP,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;QACnC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QAChC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;KACjC,CAAC;CACH,CAoCA;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,kBAAkB,CAWpB"}
package/dist/config.js CHANGED
@@ -1,4 +1,4 @@
1
- import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  /** Default Hub API when env/config file omit apiUrl. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAEnE,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAChF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrE,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrE,SAAS,EACP,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACrE,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA0B;IACvD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACjE,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,IAAI,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9B,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAyB,EAAE,OAAO,GAAG,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAU9B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACtC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;QACnB,eAAe,CAAC;IAClB,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACtC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;QACtB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;QACnB,SAAS,CAAC;IACZ,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAE7E,OAAO;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO,EAAE;YACP,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;gBACpC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,MAAM;oBACX,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS;YACf,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;gBACpC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;oBAC7B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,MAAM;YACZ,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;gBACpC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,MAAM;oBACX,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,MAAM;SACb;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAkC;IAElC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,IAAI,GAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAU,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;YACjC,IAAI,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;gBACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -8,7 +8,10 @@ describe("config", () => {
8
8
  expect(maskSecret("sk_live_abcdefghijklmnop")).toMatch(/^sk_l…/);
9
9
  });
10
10
  it("mergeConfigPatch clears empty apiKey", () => {
11
- const next = mergeConfigPatch({ apiKey: "", apiUrl: "https://hub.example" });
11
+ const next = mergeConfigPatch({
12
+ apiKey: "",
13
+ apiUrl: "https://hub.example",
14
+ });
12
15
  expect(next.apiUrl).toBe("https://hub.example");
13
16
  expect(next.apiKey).toBeUndefined();
14
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC5B,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA2lG9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4vG9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
- import { getSocialHubHealth } from "@geoly-ai/social-hub-sdk";
3
+ import { getSocialHubHealth, } from "@geoly-ai/social-hub-sdk";
4
4
  import { getBaseUrl, requireClient } from "./client.js";
5
5
  import { registerAccountsExtensions, registerAuthAndConfig, registerAuthzEvaluate, registerPermissionsExplain, registerRedditExtensions, listRedditSnapshotsPaginated, redditAggregateQueryParams, } from "./register-extensions.js";
6
6
  import { registerAdminCommands } from "./register-admin.js";
7
7
  import { assertApplyOrDryRun } from "./dry-run.js";
8
8
  import { withPermissionGate } from "./permission-runner.js";
9
9
  import { registerBatchAndExport } from "./register-batch.js";
10
- import { registerAgentContext, registerOpsRuntime, } from "./register-ops.js";
10
+ import { registerAgentContext, registerOpsRuntime } from "./register-ops.js";
11
11
  import { registerDoctorAndVersion } from "./register-shared.js";
12
12
  import { registerSkillsCommands } from "./register-skills.js";
13
13
  import { maybeNotifyUpdate } from "./update-check.js";
@@ -66,7 +66,9 @@ events
66
66
  const res = await requireClient().appendEvent(opts.team, {
67
67
  type: opts.type,
68
68
  externalRef: opts.externalRef ??
69
- (typeof payload.externalRef === "string" ? payload.externalRef : undefined) ??
69
+ (typeof payload.externalRef === "string"
70
+ ? payload.externalRef
71
+ : undefined) ??
70
72
  (typeof payload.event_id === "string" ? payload.event_id : undefined),
71
73
  socialAccountId: opts.account ??
72
74
  (typeof payload.socialAccountId === "string"
@@ -81,7 +83,9 @@ events
81
83
  ? payload.result
82
84
  : undefined),
83
85
  targetUrl: opts.targetUrl ??
84
- (typeof payload.targetUrl === "string" ? payload.targetUrl : undefined) ??
86
+ (typeof payload.targetUrl === "string"
87
+ ? payload.targetUrl
88
+ : undefined) ??
85
89
  (typeof payload.permalink === "string" ? payload.permalink : undefined),
86
90
  actor: opts.actor ??
87
91
  (payload.actor === "user" ||
@@ -247,7 +251,9 @@ dashboard
247
251
  const res = await requireClient().getDashboardSummary(opts.team, {
248
252
  from: opts.from,
249
253
  to: opts.to,
250
- interactionTrendDays: opts.trendDays ? Number(opts.trendDays) : undefined,
254
+ interactionTrendDays: opts.trendDays
255
+ ? Number(opts.trendDays)
256
+ : undefined,
251
257
  campaignId: opts.campaign,
252
258
  brandId: opts.brand,
253
259
  });
@@ -303,7 +309,7 @@ reddit
303
309
  .requiredOption("-t, --team <teamId>", "Team UUID")
304
310
  .option("--brand <uuid>", "system-level brandId")
305
311
  .option("--entry <uuid>", "calendarEntryId")
306
- .option("--ops-status <st>", "opsStatus filter")
312
+ .option("--ops-status <st>", "opsStatus filter (normal|risk|deleted|abnormal|unknown)")
307
313
  .option("--post-type <t>", "postType filter")
308
314
  .option("--contains-brand-keyword <v>", "true | false | unset")
309
315
  .option("--primary-product <text>", "primary product contains match")
@@ -762,7 +768,7 @@ drafts
762
768
  .command("create")
763
769
  .description("POST /content-drafts")
764
770
  .requiredOption("-t, --team <teamId>", "Team UUID")
765
- .requiredOption("-j, --json <json>", '{ brandId, title, body, campaignId? }')
771
+ .requiredOption("-j, --json <json>", "{ brandId, title, body, campaignId? }")
766
772
  .action(async (opts) => {
767
773
  let body;
768
774
  try {
@@ -1111,7 +1117,9 @@ plans
1111
1117
  // Group B: new command groups
1112
1118
  // ═══════════════════════════════════════════════════════════════════════════
1113
1119
  // --- agent-teams ---
1114
- const agentTeams = program.command("agent-teams").description("Agent 团队管理(admin only)");
1120
+ const agentTeams = program
1121
+ .command("agent-teams")
1122
+ .description("Agent 团队管理(admin only)");
1115
1123
  agentTeams
1116
1124
  .command("list")
1117
1125
  .description("GET /v1/agent-teams")
@@ -1145,7 +1153,9 @@ agentTeams
1145
1153
  console.log(JSON.stringify(res, null, 2));
1146
1154
  });
1147
1155
  });
1148
- const migration = program.command("migration").description("Hub migration helpers");
1156
+ const migration = program
1157
+ .command("migration")
1158
+ .description("Hub migration helpers");
1149
1159
  const migrationWorkspaceDocs = migration
1150
1160
  .command("workspace-docs")
1151
1161
  .description("Workspace document refs");
@@ -1258,7 +1268,9 @@ agentTeams
1258
1268
  });
1259
1269
  });
1260
1270
  // --- intelligence (subreddit-intelligence) ---
1261
- const pools = program.command("pools").description("运营板块池:目录、别名、准入规则");
1271
+ const pools = program
1272
+ .command("pools")
1273
+ .description("运营板块池:目录、别名、准入规则");
1262
1274
  pools
1263
1275
  .command("catalog-list")
1264
1276
  .description("GET .../subreddit-pools/catalog")
@@ -1404,7 +1416,9 @@ pools
1404
1416
  const res = await requireClient().deleteSubredditPoolTierRule(opts.team, opts.id);
1405
1417
  console.log(JSON.stringify(res, null, 2));
1406
1418
  });
1407
- const intel = program.command("intelligence").description("板块情报与 KOL 挖掘");
1419
+ const intel = program
1420
+ .command("intelligence")
1421
+ .description("板块情报与 KOL 挖掘");
1408
1422
  intel
1409
1423
  .command("industry-pools-list")
1410
1424
  .description("GET .../subreddit-intelligence/industry-pools")
@@ -1800,7 +1814,9 @@ usersCmd
1800
1814
  });
1801
1815
  });
1802
1816
  // --- brand-members ---
1803
- const brandMembersCmd = program.command("brand-members").description("品牌成员");
1817
+ const brandMembersCmd = program
1818
+ .command("brand-members")
1819
+ .description("品牌成员");
1804
1820
  brandMembersCmd
1805
1821
  .command("system-list")
1806
1822
  .description("GET /system/brand-members (preferred)")
@@ -2375,7 +2391,7 @@ reddit
2375
2391
  .option("--brand <uuid>", "system-level brandId")
2376
2392
  .option("--entry <uuid>", "calendarEntryId")
2377
2393
  .option("--account <uuid>", "socialAccountId")
2378
- .option("--ops-status <st>", "opsStatus filter")
2394
+ .option("--ops-status <st>", "opsStatus filter (normal|risk|deleted|abnormal|unknown)")
2379
2395
  .option("--post-type <t>", "postType filter")
2380
2396
  .option("--contains-brand-keyword <v>", "true | false | unset")
2381
2397
  .option("--primary-product <text>", "primary product contains match")
@@ -2400,14 +2416,19 @@ reddit
2400
2416
  console.log(JSON.stringify(res, null, 2));
2401
2417
  });
2402
2418
  // --- session ---
2403
- const session = program.command("session").description("会话管理(cookie-based)");
2419
+ const session = program
2420
+ .command("session")
2421
+ .description("会话管理(cookie-based)");
2404
2422
  session
2405
2423
  .command("login")
2406
2424
  .description("POST /v1/session/login")
2407
2425
  .requiredOption("--email <email>", "邮箱")
2408
2426
  .requiredOption("--password <password>", "密码")
2409
2427
  .action(async (opts) => {
2410
- const res = await requireClient().sessionLogin({ email: opts.email, password: opts.password });
2428
+ const res = await requireClient().sessionLogin({
2429
+ email: opts.email,
2430
+ password: opts.password,
2431
+ });
2411
2432
  console.log(JSON.stringify(res, null, 2));
2412
2433
  });
2413
2434
  session
@@ -2439,7 +2460,11 @@ session
2439
2460
  .requiredOption("--password <password>", "新密码")
2440
2461
  .option("--team <teamId>", "Team UUID(可选)")
2441
2462
  .action(async (opts) => {
2442
- const res = await requireClient().sessionSetPassword({ email: opts.email, password: opts.password, teamId: opts.team });
2463
+ const res = await requireClient().sessionSetPassword({
2464
+ email: opts.email,
2465
+ password: opts.password,
2466
+ teamId: opts.team,
2467
+ });
2443
2468
  console.log(JSON.stringify(res, null, 2));
2444
2469
  });
2445
2470
  session