@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.
- package/CHANGELOG.md +75 -1
- package/dist/cmd-manifest.json +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +4 -1
- package/dist/config.test.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -16
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +7 -1
- package/dist/index.test.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js.map +1 -1
- package/dist/permissions-gates-admin.d.ts.map +1 -1
- package/dist/permissions-gates-admin.js +35 -7
- package/dist/permissions-gates-admin.js.map +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +5 -1
- package/dist/permissions.js.map +1 -1
- package/dist/permissions.test.js +1 -1
- package/dist/permissions.test.js.map +1 -1
- package/dist/register-admin.d.ts.map +1 -1
- package/dist/register-admin.js +1 -3
- package/dist/register-admin.js.map +1 -1
- package/dist/register-batch.d.ts.map +1 -1
- package/dist/register-batch.js +1 -1
- package/dist/register-batch.js.map +1 -1
- package/dist/register-extensions.d.ts.map +1 -1
- package/dist/register-extensions.js +8 -2
- package/dist/register-extensions.js.map +1 -1
- package/dist/register-shared.d.ts.map +1 -1
- package/dist/register-shared.js +2 -4
- package/dist/register-shared.js.map +1 -1
- package/dist/register-skills.d.ts +26 -0
- package/dist/register-skills.d.ts.map +1 -1
- package/dist/register-skills.js +41 -14
- package/dist/register-skills.js.map +1 -1
- package/dist/register-skills.test.d.ts +2 -0
- package/dist/register-skills.test.d.ts.map +1 -0
- package/dist/register-skills.test.js +15 -0
- package/dist/register-skills.test.js.map +1 -0
- package/dist/skills/doctor.d.ts.map +1 -1
- package/dist/skills/doctor.js +3 -3
- package/dist/skills/doctor.js.map +1 -1
- package/dist/skills/github-source.d.ts.map +1 -1
- package/dist/skills/github-source.js +10 -3
- package/dist/skills/github-source.js.map +1 -1
- package/dist/skills/install-planner.d.ts.map +1 -1
- package/dist/skills/install-planner.js +8 -2
- package/dist/skills/install-planner.js.map +1 -1
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +3 -2
- package/dist/skills/installer.js.map +1 -1
- package/dist/skills/manifest.d.ts.map +1 -1
- package/dist/skills/manifest.js.map +1 -1
- package/dist/skills/marketplace-adapters/claude-plugin.d.ts.map +1 -1
- package/dist/skills/marketplace-adapters/claude-plugin.js.map +1 -1
- package/dist/skills/marketplace-adapters/skills-sh.d.ts.map +1 -1
- package/dist/skills/marketplace-adapters/skills-sh.js +1 -1
- package/dist/skills/marketplace-adapters/skills-sh.js.map +1 -1
- package/dist/skills/prompt-state.d.ts +56 -0
- package/dist/skills/prompt-state.d.ts.map +1 -0
- package/dist/skills/prompt-state.js +182 -0
- package/dist/skills/prompt-state.js.map +1 -0
- package/dist/skills/prompt-state.test.d.ts +2 -0
- package/dist/skills/prompt-state.test.d.ts.map +1 -0
- package/dist/skills/prompt-state.test.js +172 -0
- package/dist/skills/prompt-state.test.js.map +1 -0
- package/dist/skills/prompt.d.ts +23 -0
- package/dist/skills/prompt.d.ts.map +1 -0
- package/dist/skills/prompt.js +92 -0
- package/dist/skills/prompt.js.map +1 -0
- package/dist/skills/prompt.test.d.ts +2 -0
- package/dist/skills/prompt.test.d.ts.map +1 -0
- package/dist/skills/prompt.test.js +98 -0
- package/dist/skills/prompt.test.js.map +1 -0
- package/dist/skills/source-resolver.d.ts.map +1 -1
- package/dist/skills/source-resolver.js +6 -3
- package/dist/skills/source-resolver.js.map +1 -1
- package/dist/skills/state-store.d.ts.map +1 -1
- package/dist/skills/state-store.js.map +1 -1
- package/dist/skills/target-detector.d.ts.map +1 -1
- package/dist/skills/target-detector.js +3 -1
- package/dist/skills/target-detector.js.map +1 -1
- package/dist/skills/target-detector.test.js +3 -1
- package/dist/skills/target-detector.test.js.map +1 -1
- package/dist/skills/tui.d.ts +3 -0
- package/dist/skills/tui.d.ts.map +1 -1
- package/dist/skills/tui.js +79 -23
- package/dist/skills/tui.js.map +1 -1
- package/dist/skills/tui.test.js +10 -2
- package/dist/skills/tui.test.js.map +1 -1
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js.map +1 -1
- package/dist/update-check.test.js.map +1 -1
- package/package.json +2 -2
- package/skills/manifest.json +1 -1
- package/skills/social-hub-accounts/SKILL.md +4 -4
- package/skills/social-hub-cli/evals/evals.json +4 -1
- package/skills/social-hub-events-observability/SKILL.md +4 -4
- package/skills/social-hub-intelligence/SKILL.md +34 -3
- package/skills/social-hub-openclaw-context/SKILL.md +1 -1
- package/skills/social-hub-posts/SKILL.md +5 -0
- 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
|
|
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
|
package/dist/cmd-manifest.json
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
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. */
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.test.js
CHANGED
|
@@ -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({
|
|
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
|
});
|
package/dist/config.test.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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"
|
|
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"
|
|
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
|
|
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>",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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({
|
|
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({
|
|
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
|