@geoly-ai/social-hub-cli 0.1.10 → 0.1.12
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 +80 -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 +39 -14
- 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 +3 -1
- 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 +1 -0
- package/dist/register-skills.d.ts.map +1 -1
- package/dist/register-skills.js +17 -7
- package/dist/register-skills.js.map +1 -1
- package/dist/register-skills.test.js.map +1 -1
- 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 +62 -0
- package/dist/skills/prompt-state.d.ts.map +1 -0
- package/dist/skills/prompt-state.js +205 -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 +218 -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 +97 -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 +1 -1
- 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-openclaw-context/SKILL.md +1 -1
- package/skills/social-hub-shared/SKILL.md +28 -28
package/CHANGELOG.md
CHANGED
|
@@ -4,18 +4,46 @@ 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.12] - 2026-06-11
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- compact scrolling viewport for skills prompts; verify publishes
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- keep generated CHANGELOG prettier-clean
|
|
16
|
+
|
|
17
|
+
## [0.1.11] - 2026-06-11
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- hybrid arrow-key + typed-number prompts for skills installer
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- repair stale e2e/unit tests, prune dead code, harden intelligence page
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- style: apply prettier across the repository
|
|
30
|
+
|
|
7
31
|
## [0.1.10] - 2026-06-09
|
|
8
32
|
|
|
9
33
|
Normalize reddit post opsStatus filters; align stats filters; update social-hub-posts skill and reddit stats CLI options.
|
|
10
34
|
|
|
11
35
|
### Added
|
|
36
|
+
|
|
12
37
|
- improve refresh fallback routing and post performance UX
|
|
13
38
|
|
|
14
39
|
### Fixed
|
|
40
|
+
|
|
15
41
|
- normalize opsStatus filters and align stats query scope
|
|
42
|
+
|
|
16
43
|
## [0.1.9] - 2026-06-08
|
|
17
44
|
|
|
18
45
|
### Added
|
|
46
|
+
|
|
19
47
|
- systematize hub ingest and runtime gates
|
|
20
48
|
- add persona pool alias seeding
|
|
21
49
|
- Hub-first ops runtime, style-curator skill, and post list UX
|
|
@@ -30,16 +58,21 @@ Normalize reddit post opsStatus filters; align stats filters; update social-hub-
|
|
|
30
58
|
- add system persona library and account personaId linking
|
|
31
59
|
|
|
32
60
|
### Fixed
|
|
61
|
+
|
|
33
62
|
- auto-detect managed dirs for skills update/remove
|
|
34
63
|
|
|
35
64
|
### Changed
|
|
65
|
+
|
|
36
66
|
- close admin gap with db/api/e2e coverage
|
|
67
|
+
|
|
37
68
|
## [0.1.8] - 2026-06-05
|
|
38
69
|
|
|
39
70
|
Bundle updated Social Hub subreddit pool skills and persona pool alias guidance.
|
|
71
|
+
|
|
40
72
|
## [0.1.7] - 2026-06-04
|
|
41
73
|
|
|
42
74
|
### Added
|
|
75
|
+
|
|
43
76
|
- Hub-first ops runtime, style-curator skill, and post list UX
|
|
44
77
|
- complete repost link support
|
|
45
78
|
- brand-first publishing scope, persona-aware pools, cli update check
|
|
@@ -53,15 +86,19 @@ Bundle updated Social Hub subreddit pool skills and persona pool alias guidance.
|
|
|
53
86
|
- reddit --aggregate/--all 分页,stats --range 365|all;SDK 补聚合与 offset 参数
|
|
54
87
|
|
|
55
88
|
### Fixed
|
|
89
|
+
|
|
56
90
|
- auto-detect managed dirs for skills update/remove
|
|
57
91
|
|
|
58
92
|
### Changed
|
|
93
|
+
|
|
59
94
|
- close admin gap with db/api/e2e coverage
|
|
95
|
+
|
|
60
96
|
## [0.1.6] - 2026-06-04
|
|
61
97
|
|
|
62
98
|
Post Performance repost-link fields and CLI skill/help alignment.
|
|
63
99
|
|
|
64
100
|
### Added
|
|
101
|
+
|
|
65
102
|
- `reddit create-snapshot`, `reddit update`, and `reddit batch-upsert` help examples now document `firstRepostLink` / `secondRepostLink`.
|
|
66
103
|
- bundled `social-hub-posts` skill documents repost-link create/update/batch-upsert payloads.
|
|
67
104
|
|
|
@@ -70,6 +107,7 @@ Post Performance repost-link fields and CLI skill/help alignment.
|
|
|
70
107
|
npm registry update check with agent upgrade hints; brand-first and persona-aware bundled skills.
|
|
71
108
|
|
|
72
109
|
### Added
|
|
110
|
+
|
|
73
111
|
- brand-first publishing scope, persona-aware pools, cli update check
|
|
74
112
|
- persona-aware subreddit candidates and diversity selection
|
|
75
113
|
- extend system library fields and import dataset
|
|
@@ -83,15 +121,19 @@ npm registry update check with agent upgrade hints; brand-first and persona-awar
|
|
|
83
121
|
- team subreddit blocklists and style-mark CLI set
|
|
84
122
|
|
|
85
123
|
### Fixed
|
|
124
|
+
|
|
86
125
|
- auto-detect managed dirs for skills update/remove
|
|
126
|
+
|
|
87
127
|
## [0.1.4] - 2026-06-03
|
|
88
128
|
|
|
89
129
|
Persona-aware pool queries (--persona-aware, --tier, --include-debug), updated openclaw-context CLI skill, and subreddit candidate diversity fields.
|
|
130
|
+
|
|
90
131
|
## [0.1.3] - 2026-06-03
|
|
91
132
|
|
|
92
133
|
Persona library list filters and import
|
|
93
134
|
|
|
94
135
|
### Added
|
|
136
|
+
|
|
95
137
|
- extend system library fields and import dataset
|
|
96
138
|
- server-side filters, refresh run logs, CLI/SDK sync
|
|
97
139
|
- sanctions update/delete and blocklist UI on RiskCenter
|
|
@@ -105,12 +147,15 @@ Persona library list filters and import
|
|
|
105
147
|
- extend events append CLI flags and interaction flow
|
|
106
148
|
|
|
107
149
|
### Fixed
|
|
150
|
+
|
|
108
151
|
- auto-detect managed dirs for skills update/remove
|
|
152
|
+
|
|
109
153
|
## [0.1.2] - 2026-06-02
|
|
110
154
|
|
|
111
155
|
Reddit post snapshot filters, refresh execution logs, and `containsBrandKeyword` field docs.
|
|
112
156
|
|
|
113
157
|
### Added
|
|
158
|
+
|
|
114
159
|
- `reddit refresh-logs` — GET `/reddit-post-snapshots/refresh-logs` (cron + manual refresh run history)
|
|
115
160
|
- `reddit list` query params: `--ops-status`, `--post-type`, `--contains-brand-keyword`, `--primary-product`
|
|
116
161
|
- SDK `batchUpsertRedditPostSnapshotsByPermalink` item type includes `containsBrandKeyword`
|
|
@@ -121,6 +166,7 @@ Reddit post snapshot filters, refresh execution logs, and `containsBrandKeyword`
|
|
|
121
166
|
Subreddit sanctions lifecycle: update and delete.
|
|
122
167
|
|
|
123
168
|
### Added
|
|
169
|
+
|
|
124
170
|
- `compliance sanctions-update` — PATCH `/subreddit-sanctions/:id` (status/reason/expiresAt)
|
|
125
171
|
- `compliance sanctions-delete` — DELETE `/subreddit-sanctions/:id`
|
|
126
172
|
|
|
@@ -129,6 +175,7 @@ Subreddit sanctions lifecycle: update and delete.
|
|
|
129
175
|
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).
|
|
130
176
|
|
|
131
177
|
### Changed
|
|
178
|
+
|
|
132
179
|
- blocklists moved from team-scoped to system-scoped API, SDK, and CLI
|
|
133
180
|
- guardrails and agent-context read system blocklists (no per-team duplication)
|
|
134
181
|
|
|
@@ -137,34 +184,46 @@ Subreddit blocklists are now **system-level** (`/v1/system/subreddit-blocklists`
|
|
|
137
184
|
Status-snapshot externalRef idempotency; CLI cmd manifest export; social-hub-accounts skill docs.
|
|
138
185
|
|
|
139
186
|
### Added
|
|
187
|
+
|
|
140
188
|
- status-snapshot externalRef idempotency and CLI cmd manifest
|
|
189
|
+
|
|
141
190
|
## [0.0.21] - 2026-06-02
|
|
142
191
|
|
|
143
|
-
System persona library: personas system
|
|
192
|
+
System persona library: personas system-\* commands and accounts --persona/--category filters.
|
|
144
193
|
|
|
145
194
|
### Added
|
|
195
|
+
|
|
146
196
|
- add system persona library and account personaId linking
|
|
197
|
+
|
|
147
198
|
## [0.0.20] - 2026-06-01
|
|
148
199
|
|
|
149
200
|
### Fixed
|
|
201
|
+
|
|
150
202
|
- auto-detect managed dirs for skills update/remove
|
|
203
|
+
|
|
151
204
|
## [0.0.19] - 2026-06-01
|
|
152
205
|
|
|
153
206
|
### Added
|
|
207
|
+
|
|
154
208
|
- reddit --aggregate/--all 分页,stats --range 365|all;SDK 补聚合与 offset 参数
|
|
209
|
+
|
|
155
210
|
## [0.0.18] - 2026-06-01
|
|
156
211
|
|
|
157
212
|
### Added
|
|
213
|
+
|
|
158
214
|
- reddit list/list-full/stats 支持 --brand;SDK 增加 brandId;skills 对齐系统级品牌
|
|
159
215
|
- team subreddit blocklists and style-mark CLI set
|
|
216
|
+
|
|
160
217
|
## [0.0.17] - 2026-06-01
|
|
161
218
|
|
|
162
219
|
feat: subreddit blocklists + style-mark external upsert
|
|
220
|
+
|
|
163
221
|
## [0.0.16] - 2026-05-29
|
|
164
222
|
|
|
165
223
|
Bundled skill docs aligned with Hub-first CLI syntax; browser-env telemetry and ops runtime extensions.
|
|
166
224
|
|
|
167
225
|
### Added
|
|
226
|
+
|
|
168
227
|
- hub runtime readiness, bundled skills sync, and skill doc alignment
|
|
169
228
|
- extend events append CLI flags and interaction flow
|
|
170
229
|
- harden OpenClaw interaction flow
|
|
@@ -174,24 +233,29 @@ Bundled skill docs aligned with Hub-first CLI syntax; browser-env telemetry and
|
|
|
174
233
|
- add reddit batch-upsert and drop import-feishu command
|
|
175
234
|
|
|
176
235
|
### Fixed
|
|
236
|
+
|
|
177
237
|
- upsert feishu snapshots by feishuRecordId
|
|
178
238
|
- default apiUrl to production Social Ops Hub
|
|
179
239
|
- parse conventional commit subjects for CHANGELOG
|
|
180
240
|
- default skills install to TUI with CLI prefill
|
|
181
241
|
|
|
182
242
|
### Changed
|
|
243
|
+
|
|
183
244
|
- automate CLI versioning and CHANGELOG
|
|
184
245
|
- add publish:cli script for single-package npm publish
|
|
246
|
+
|
|
185
247
|
## [0.0.15] - 2026-05-28
|
|
186
248
|
|
|
187
249
|
Hub runtime readiness: authz evaluate resource/action, expanded permission gates, bundled skills sync on publish.
|
|
188
250
|
|
|
189
251
|
### Added
|
|
252
|
+
|
|
190
253
|
- `authz evaluate --resource` / `--action` for runtime preflight checks
|
|
191
254
|
- Permission gates for ops runtime, browser-envs, and personas commands
|
|
192
255
|
- Bundled skills sync and freshness verification before CLI publish
|
|
193
256
|
|
|
194
257
|
### Fixed
|
|
258
|
+
|
|
195
259
|
- `authz evaluate` permission gate uses `task:read` instead of manager-only `apiKey:list`
|
|
196
260
|
- Bundled skill docs aligned with Hub-first CLI syntax
|
|
197
261
|
|
|
@@ -200,48 +264,63 @@ Hub runtime readiness: authz evaluate resource/action, expanded permission gates
|
|
|
200
264
|
OpenClaw Hub-first interaction flow: events append flags, style-marks/curator CLI, SDK 0.0.7
|
|
201
265
|
|
|
202
266
|
### Added
|
|
267
|
+
|
|
203
268
|
- extend events append CLI flags and interaction flow
|
|
204
269
|
- harden OpenClaw interaction flow
|
|
270
|
+
|
|
205
271
|
## [0.0.13] - 2026-05-22
|
|
206
272
|
|
|
207
273
|
Graph v2, compliance rule caches, intelligence CLI extensions, and modular agent skills (13 skills).
|
|
208
274
|
|
|
209
275
|
### Added
|
|
276
|
+
|
|
210
277
|
- add graph v2, intelligence extensions, modular skills
|
|
211
278
|
|
|
212
279
|
### Fixed
|
|
280
|
+
|
|
213
281
|
- upsert feishu snapshots by feishuRecordId
|
|
282
|
+
|
|
214
283
|
## [0.0.12] - 2026-05-22
|
|
215
284
|
|
|
216
285
|
Add system brands and brand-members commands; depends on @geoly-ai/social-hub-sdk@0.0.5.
|
|
217
286
|
|
|
218
287
|
### Added
|
|
288
|
+
|
|
219
289
|
- add system brands and brand-members commands
|
|
290
|
+
|
|
220
291
|
## [0.0.11] - 2026-05-21
|
|
221
292
|
|
|
222
293
|
Support never duration and permission-matrix duration options
|
|
223
294
|
|
|
224
295
|
### Added
|
|
296
|
+
|
|
225
297
|
- granular CLI token duration permissions via matrix
|
|
226
298
|
|
|
227
299
|
### Fixed
|
|
300
|
+
|
|
228
301
|
- default apiUrl to production Social Ops Hub
|
|
302
|
+
|
|
229
303
|
## [0.0.10] - 2026-05-21
|
|
230
304
|
|
|
231
305
|
Default CLI apiUrl to production Social Ops Hub (https://reddit.eclick-geo.com/api).
|
|
306
|
+
|
|
232
307
|
## [0.0.9] - 2026-05-21
|
|
233
308
|
|
|
234
309
|
Remove reddit import-feishu; add reddit batch-upsert for Feishu-to-Hub sync via local lark-cli.
|
|
235
310
|
|
|
236
311
|
### Added
|
|
312
|
+
|
|
237
313
|
- add reddit batch-upsert and drop import-feishu command
|
|
238
314
|
|
|
239
315
|
### Fixed
|
|
316
|
+
|
|
240
317
|
- parse conventional commit subjects for CHANGELOG
|
|
241
318
|
|
|
242
319
|
### Changed
|
|
320
|
+
|
|
243
321
|
- automate CLI versioning and CHANGELOG
|
|
244
322
|
- add publish:cli script for single-package npm publish
|
|
323
|
+
|
|
245
324
|
## [0.0.8] - 2026-05-21
|
|
246
325
|
|
|
247
326
|
### 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
|
});
|
|
@@ -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)")
|
|
@@ -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
|