@audienti/cli 0.1.45 → 0.1.51
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 +49 -0
- package/README.md +150 -1
- package/package.json +1 -1
- package/skills/audienti/SKILL.md +100 -1
- package/src/api-client.js +53 -2
- package/src/cli.js +941 -12
package/CHANGELOG.md
CHANGED
|
@@ -4,8 +4,57 @@ All notable changes to the Audienti CLI are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.1.51] - 2026-09-03
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Add first-class `audienti inbox-ops queue`, `filters`, and `rule` commands backed by owner-scoped account APIs, authoritative row-derived sender/domain identities, all four allow/filter rule combinations, and unchanged JSON output.
|
|
12
|
+
|
|
13
|
+
## [0.1.50] - 2026-09-02
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Add preview-first `audienti prospects move-account` with dual-account selection, optional destination assignment, motion and list mappings, manifest-bound apply, stable human-readable summaries, and unchanged final JSON output.
|
|
18
|
+
|
|
19
|
+
## [0.1.49] - 2026-09-02
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- Expose configured user and social-cookie proxy geography, effective proxy source, and server-calculated LinkedIn quotas, warm-up ramp, outstanding-invitation inventory state, and current invitation capacity in `audienti setup play preflight` without exposing proxy or authentication secrets.
|
|
24
|
+
|
|
25
|
+
## [0.1.48] - 2026-09-02
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- Add account-scoped `audienti users automation show` and preview-first `update` commands for principal-specific LinkedIn controls, category and aggregate visibility limits, warm-up ramping, unchanged JSON readback, and explicit `--apply` persistence.
|
|
30
|
+
- Add reversible `audienti icps archive` and `restore` commands, active/archived/all list filtering, lifecycle status in ICP analytics, and inspectable primary-motion and preserved-secondary-link effects.
|
|
31
|
+
|
|
32
|
+
## [0.1.47] - 2026-09-02
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- Expose server-derived social-cookie active days, working hours, effective timezone, and current in-window status in `audienti setup play preflight`.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- Allow `audienti motions update <motn_id> --payload <file.json>` to replace an account-scoped motion principal and backing list, including `list_id: null` clearing.
|
|
41
|
+
|
|
42
|
+
## [0.1.46] - 2026-09-02
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- Add `audienti analytics icps` and the account-scoped ICP analytics API for current source-ICP prospect mix, rolling seven-day contribution, per-ICP counts, creation timestamps and human-readable ages, and explicit unattributed semantics.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- Allow `audienti motions update <motn_id> --status closing` for motion wind-downs that stop discovery while admitted Operator work drains.
|
|
51
|
+
|
|
7
52
|
## [0.1.45] - 2026-09-02
|
|
8
53
|
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- Add `audienti analytics motions` and the account-scoped motion analytics API for current prospect mix, rolling seven-day recorded-source contribution, per-motion counts, explicit attribution semantics, and unchanged machine-readable JSON output.
|
|
57
|
+
|
|
9
58
|
### Changed
|
|
10
59
|
|
|
11
60
|
- Keep Operator and analytics API responses within shared product visibility while preserving true-user authorization for Operator queues.
|
package/README.md
CHANGED
|
@@ -4,7 +4,8 @@ Audienti CLI is the agent-first command-line client for the Audienti production
|
|
|
4
4
|
API and the local bridge for Audienti's app-hosted MCP endpoint. It lets local
|
|
5
5
|
coding agents and operators inspect accounts,
|
|
6
6
|
create and manage plays, import prospects, build lists, manage task reminders,
|
|
7
|
-
configure list routing rules
|
|
7
|
+
configure list routing rules and account-user automation safety, and work
|
|
8
|
+
supported operator flows.
|
|
8
9
|
|
|
9
10
|
## Install
|
|
10
11
|
|
|
@@ -137,14 +138,18 @@ Common inspection commands:
|
|
|
137
138
|
audienti update check
|
|
138
139
|
audienti operator next --plan
|
|
139
140
|
audienti writer test-run <prsp_id>
|
|
141
|
+
audienti analytics motions --json
|
|
142
|
+
audienti analytics icps --json
|
|
140
143
|
audienti motions analytics <motn_id>
|
|
141
144
|
audienti motions run-discovery <motn_id>
|
|
142
145
|
audienti motions quick-start --url https://example.com --wait --confirm
|
|
143
146
|
audienti motions abm-companies <motn_id> add --file abm-domains.txt
|
|
144
147
|
audienti motions abm-companies <motn_id> list
|
|
148
|
+
audienti motions update <motn_id> --status closing
|
|
145
149
|
audienti motions update <motn_id> --status paused
|
|
146
150
|
audienti motions update <motn_id> --start-date 2026-09-01 --end-date 2026-09-30 --maximum-company-count 25
|
|
147
151
|
audienti motions update <motn_id> --own-post-engagement true
|
|
152
|
+
audienti motions update <motn_id> --payload motion-principal-list.json
|
|
148
153
|
audienti motions update <motn_id> --payload motion-signals.json
|
|
149
154
|
audienti motions activate <motn_id>
|
|
150
155
|
audienti motions delete <motn_id> --confirm yes
|
|
@@ -167,6 +172,9 @@ audienti company-rules list
|
|
|
167
172
|
audienti lists routing-rules <list_id> list
|
|
168
173
|
audienti lists routing-rules <list_id> apply
|
|
169
174
|
audienti users activity --window 7d
|
|
175
|
+
audienti users automation show 136 --platform linkedin --json --account <acct_id>
|
|
176
|
+
audienti users automation update 136 --payload automation-controls.json --json --account <acct_id>
|
|
177
|
+
audienti users automation update 136 --payload automation-controls.json --apply --json --account <acct_id>
|
|
170
178
|
audienti analytics prospects --window 24h
|
|
171
179
|
audienti analytics dashboard --play-tag wine_campaign
|
|
172
180
|
audienti analytics metrics --cohort-preset week-to-date
|
|
@@ -206,6 +214,21 @@ audienti operator next --plan
|
|
|
206
214
|
audienti operator next --done --note "Connection request sent."
|
|
207
215
|
```
|
|
208
216
|
|
|
217
|
+
Inbox Ops has its own owner-scoped CLI surface. Queue rows expose the stable row
|
|
218
|
+
id used by the rule command; sender and domain values are always derived by the
|
|
219
|
+
server from that authorized row:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
audienti inbox-ops queue [--page <n>]
|
|
223
|
+
audienti inbox-ops filters
|
|
224
|
+
audienti inbox-ops rule <row_id> --scope sender --disposition filter
|
|
225
|
+
audienti inbox-ops rule <row_id> --scope domain --disposition allow
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
The four rule combinations mirror the Operator card actions. They update only
|
|
229
|
+
the authenticated owner's personal/global Inbox Ops preferences and do not
|
|
230
|
+
archive mail, call the provider, or add a DNC entry.
|
|
231
|
+
|
|
209
232
|
To manage simple reminders for yourself:
|
|
210
233
|
|
|
211
234
|
```bash
|
|
@@ -318,6 +341,112 @@ happened later, such as connection requests sent in a date range. Rebuild the
|
|
|
318
341
|
list when the event definition or date window changes so the analytics question
|
|
319
342
|
stays auditable.
|
|
320
343
|
|
|
344
|
+
`audienti setup play preflight` includes the selected sender's server-derived
|
|
345
|
+
working schedule under `social_cookie.automation`, including `active_days`,
|
|
346
|
+
normalized `working_hours`, effective `time_zone`, and current
|
|
347
|
+
`in_working_hours` state. The human-readable output reports the same timezone,
|
|
348
|
+
today's window, and whether provider execution is currently inside the window.
|
|
349
|
+
It also reports the configured user fallback location, the connected account's
|
|
350
|
+
configured and last-verified effective proxy geography, and the proxy source
|
|
351
|
+
without exposing proxy URLs, credentials, egress IPs, or browser session data.
|
|
352
|
+
For LinkedIn, `social_cookie.automation.pacing` includes effective weekly
|
|
353
|
+
quotas, daily targets, motion active days, the outstanding-invitation cap, ramp
|
|
354
|
+
configuration, current outstanding inventory, any inventory blocker, and current
|
|
355
|
+
invitation capacity calculated by the server. A `null` weekly quota means
|
|
356
|
+
unlimited.
|
|
357
|
+
|
|
358
|
+
Use `users automation` to inspect or change one account user's LinkedIn safety
|
|
359
|
+
policy without changing the saved account selection:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
audienti users automation show 136 --platform linkedin --json --account acct_example
|
|
363
|
+
audienti users automation update 136 --payload automation-controls.json --json --account acct_example
|
|
364
|
+
audienti users automation update 136 --payload automation-controls.json --apply --json --account acct_example
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
`update` is preview-only unless `--apply` is present. The CLI always sends
|
|
368
|
+
`platform: "linkedin"` and an explicit `apply` boolean after the file fields,
|
|
369
|
+
so a payload file cannot silently opt into applying a change. The server scopes
|
|
370
|
+
the connected account through the selected account plus account user, preserves
|
|
371
|
+
omitted controls, returns the before and proposed/actual after states, and
|
|
372
|
+
records an audit event only for an applied update. `--json` prints the server
|
|
373
|
+
payload unchanged.
|
|
374
|
+
|
|
375
|
+
An `automation-controls.json` warm-up payload can use every automation gate,
|
|
376
|
+
independent action limits, an aggregate visibility limit, and a weekly ramp:
|
|
377
|
+
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"automation_controls": {
|
|
381
|
+
"automatic_sending_enabled": false,
|
|
382
|
+
"visibility_operations_autopilot_enabled": true,
|
|
383
|
+
"post_comment_autopilot_enabled": false,
|
|
384
|
+
"connection_request_autopilot_enabled": false,
|
|
385
|
+
"inmail_autopilot_enabled": false,
|
|
386
|
+
"direct_message_autopilot_enabled": false,
|
|
387
|
+
"email_sending_autopilot_enabled": false,
|
|
388
|
+
"manual_action_handoff_enabled": false,
|
|
389
|
+
"risk_cooldown_enabled": true
|
|
390
|
+
},
|
|
391
|
+
"action_limits": {
|
|
392
|
+
"profile_view": { "hourly": 2, "daily": 4, "weekly": 20 },
|
|
393
|
+
"follow": { "hourly": 2, "daily": 3, "weekly": 15 },
|
|
394
|
+
"like": { "hourly": 1, "daily": 2, "weekly": 10 },
|
|
395
|
+
"invite": { "hourly": 1, "daily": 2, "weekly": 10 },
|
|
396
|
+
"message": { "hourly": 1, "daily": 2, "weekly": 10 },
|
|
397
|
+
"comment": { "hourly": 1, "daily": 1, "weekly": 5 },
|
|
398
|
+
"visibility": { "hourly": 3, "daily": 8, "weekly": 40 }
|
|
399
|
+
},
|
|
400
|
+
"visibility_ramp": {
|
|
401
|
+
"enabled": true,
|
|
402
|
+
"starting_daily_limit": 8,
|
|
403
|
+
"weekly_increment": 2
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
`follow` covers follows and unfollows; `like` covers likes and unlikes;
|
|
409
|
+
`message` covers messages and InMail. `visibility` is the aggregate cap across
|
|
410
|
+
profile views, follows/unfollows, and likes/unlikes. The show/preview readback
|
|
411
|
+
includes configured, default, effective, used, and remaining hourly, daily,
|
|
412
|
+
and weekly values plus the currently binding limits.
|
|
413
|
+
|
|
414
|
+
Motion update payload mode can replace the selected principal and backing list:
|
|
415
|
+
|
|
416
|
+
```json
|
|
417
|
+
{
|
|
418
|
+
"principal_account_user_id": 136,
|
|
419
|
+
"list_id": "list_abc123"
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
The principal and list are resolved inside the selected account. Use
|
|
424
|
+
`"list_id": null` to clear the backing list.
|
|
425
|
+
|
|
426
|
+
To inspect the account's current prospect mix by motion type and compare it
|
|
427
|
+
with the rolling seven-day recorded-source contribution:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
audienti analytics motions
|
|
431
|
+
audienti analytics motions --json
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
Current Unattributed counts mean no current motion association. Rolling
|
|
435
|
+
seven-day Unattributed counts mean no attributable recorded source motion; the
|
|
436
|
+
server falls back to the current motion only when recorded source data is
|
|
437
|
+
blank.
|
|
438
|
+
|
|
439
|
+
To inspect the account's current prospect mix by source ICP and compare it
|
|
440
|
+
with the rolling seven-day source contribution:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
audienti analytics icps
|
|
444
|
+
audienti analytics icps --json
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Unattributed means no attributable account source ICP. The server falls back
|
|
448
|
+
to the current motion ICP only when recorded ICP source data is blank.
|
|
449
|
+
|
|
321
450
|
To see whether one motion is producing prospects by day, and where each
|
|
322
451
|
produced-day cohort currently sits in the funnel:
|
|
323
452
|
|
|
@@ -362,12 +491,19 @@ To create or update an ICP from a rich JSON payload:
|
|
|
362
491
|
```bash
|
|
363
492
|
audienti icps create --payload icp.json
|
|
364
493
|
audienti icps update <icp_id> --payload icp-patch.json
|
|
494
|
+
audienti icps list --status all
|
|
495
|
+
audienti icps archive <icp_id>
|
|
496
|
+
audienti icps restore <icp_id>
|
|
365
497
|
```
|
|
366
498
|
|
|
367
499
|
`icps update --payload` accepts the same human-readable facet keys as create.
|
|
368
500
|
Supplied facet collections, such as `company_sizes_attributes`, replace that
|
|
369
501
|
collection in place; omitted fields and collections remain unchanged. Invalid
|
|
370
502
|
lookup values fail server-side without partially applying the patch.
|
|
503
|
+
Archive is reversible and is the normal cleanup action. It removes the ICP from
|
|
504
|
+
new selection, closes active primary motions so admitted work can drain,
|
|
505
|
+
archives inactive primary motions, and preserves secondary motion links.
|
|
506
|
+
Restoring the ICP does not reactivate motions.
|
|
371
507
|
|
|
372
508
|
To audit one account user's outbound actions, optionally narrowed to one motion
|
|
373
509
|
and one AccountProspect.created_at cohort:
|
|
@@ -446,6 +582,19 @@ audienti prospects assign <prsp_id> --assigned-user <account_user_id|me>
|
|
|
446
582
|
audienti prospects assign <prsp_id> --assigned-user unassign
|
|
447
583
|
```
|
|
448
584
|
|
|
585
|
+
To preview moving a prospect and its account-scoped history into another
|
|
586
|
+
account where you are also an administrator:
|
|
587
|
+
|
|
588
|
+
```bash
|
|
589
|
+
audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id>
|
|
590
|
+
audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --assigned-user me --target-motion <motn_id> --target-list <list_id> --apply
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
The command is preview-only unless `--apply` is present. Apply always requests
|
|
594
|
+
a fresh preview first and submits the returned `manifest_digest`, so a move is
|
|
595
|
+
rejected when the underlying state changes. `--json` prints the preview or final
|
|
596
|
+
apply response unchanged.
|
|
597
|
+
|
|
449
598
|
To make emergency prospect state changes without going through a motion:
|
|
450
599
|
|
|
451
600
|
```bash
|
package/package.json
CHANGED
package/skills/audienti/SKILL.md
CHANGED
|
@@ -70,9 +70,17 @@ Useful MCP tools:
|
|
|
70
70
|
- `auth.me` confirms the token identity.
|
|
71
71
|
- `accounts.list` shows accessible accounts.
|
|
72
72
|
- `setup.play_preflight` returns connected-account readiness and setup or
|
|
73
|
-
mapping URLs
|
|
73
|
+
mapping URLs, including the selected sender's active days, working hours,
|
|
74
|
+
effective timezone, current in-window status, configured user fallback
|
|
75
|
+
location, effective proxy geography and source, and server-calculated
|
|
76
|
+
LinkedIn pacing and outstanding-invitation inventory authority under
|
|
77
|
+
`social_cookie.automation`. Treat `ready: true` as connection readiness, not
|
|
78
|
+
approval to start automation.
|
|
74
79
|
- `offers.create`, `icps.create`, and `motions.create` set up the offer, ICP,
|
|
75
80
|
and play.
|
|
81
|
+
- Use `audienti icps list --status all` to audit active and archived ICPs. Use
|
|
82
|
+
`audienti icps archive <icp_id>` for reversible cleanup and `restore` to make
|
|
83
|
+
the ICP selectable again; restore never reactivates motions.
|
|
76
84
|
- Use `audienti motions abm-companies <motn_id> add --file <txt|json>` to attach
|
|
77
85
|
a positive company filter list for isolated ABM discovery runs.
|
|
78
86
|
- `analytics.stages` returns stage conversion cohorts and stage aging.
|
|
@@ -85,6 +93,9 @@ Useful MCP tools:
|
|
|
85
93
|
payload or behavior is unclear.
|
|
86
94
|
- Inspect the current resource before a create, update, attach, delete, or
|
|
87
95
|
operator outcome writeback.
|
|
96
|
+
- For account-user automation, run `users automation show`, then preview the
|
|
97
|
+
exact payload without `--apply`. Apply only after explicit authorization and
|
|
98
|
+
verify the applied response/readback.
|
|
88
99
|
- Treat the production API as the source of truth. Persist durable work in
|
|
89
100
|
Audienti rather than leaving it only in agent prose.
|
|
90
101
|
- Keep current gaps explicit. Do not imply that unsupported actions execute.
|
|
@@ -96,10 +107,15 @@ audienti help agent-workflows
|
|
|
96
107
|
audienti prospects list --query "name or company" --wide --json
|
|
97
108
|
audienti prospects list --assigned-user unassigned --json
|
|
98
109
|
audienti prospects assign <prsp_id> --assigned-user me --json
|
|
110
|
+
audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --json
|
|
111
|
+
audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --assigned-user me --apply --json
|
|
99
112
|
audienti prospects set-status <prsp_id> --status not_fit --json
|
|
100
113
|
audienti prospects lock <prsp_id> --note "Emergency hold" --json
|
|
101
114
|
audienti prospects unlock <prsp_id> --json
|
|
102
115
|
audienti users activity me --window 7d --json
|
|
116
|
+
audienti users automation show <account_user_id|me> --platform linkedin --json --account <acct_id>
|
|
117
|
+
audienti users automation update <account_user_id|me> --payload automation-controls.json --json --account <acct_id>
|
|
118
|
+
audienti users automation update <account_user_id|me> --payload automation-controls.json --apply --json --account <acct_id>
|
|
103
119
|
audienti prospects import-batch --file prospects.csv --motion <motn_id> --assigned-user me --json
|
|
104
120
|
audienti lists create --name "Target list" --json
|
|
105
121
|
audienti lists routing-rules <list_id> list --json
|
|
@@ -111,10 +127,16 @@ audienti motions abm-companies <motn_id> add --file abm-domains.txt --json
|
|
|
111
127
|
audienti motions abm-companies <motn_id> list --json
|
|
112
128
|
audienti motions update <motn_id> --status paused --json
|
|
113
129
|
audienti motions update <motn_id> --start-date 2026-09-01 --end-date 2026-09-30 --maximum-company-count 25 --json
|
|
130
|
+
audienti motions update <motn_id> --payload motion-principal-list.json --json
|
|
114
131
|
audienti motions activate <motn_id> --json
|
|
115
132
|
audienti motions delete <motn_id> --confirm yes --json
|
|
116
133
|
audienti operator next --json
|
|
117
134
|
audienti operator next --plan
|
|
135
|
+
audienti inbox-ops queue --json
|
|
136
|
+
audienti inbox-ops filters --json
|
|
137
|
+
audienti inbox-ops rule <row_id> --scope <sender|domain> --disposition <allow|filter> --json
|
|
138
|
+
audienti analytics motions --json
|
|
139
|
+
audienti analytics icps --json
|
|
118
140
|
audienti analytics prospects --window 24h --json
|
|
119
141
|
audienti analytics stages --window 30d
|
|
120
142
|
audienti analytics visibility --window 24h --user me --json
|
|
@@ -132,6 +154,83 @@ audienti writer test-run <prsp_id> --mode step --branch no-accept --step 3 --rep
|
|
|
132
154
|
audienti writer test-run show <prsp_id> <rprt_id>
|
|
133
155
|
```
|
|
134
156
|
|
|
157
|
+
## Prospect Account Moves
|
|
158
|
+
|
|
159
|
+
Use `audienti prospects move-account` only to transfer one prospect and its
|
|
160
|
+
account-scoped history, not to copy it. `--account` is the source account and
|
|
161
|
+
`--target-account` is the destination. The authenticated user must administer
|
|
162
|
+
both accounts.
|
|
163
|
+
|
|
164
|
+
Start with a preview and inspect `eligible`, `blockers`, `mappings`,
|
|
165
|
+
`dispositions`, and `expected_state`:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
audienti prospects move-account <prsp_id> \
|
|
169
|
+
--account <source_acct_id> \
|
|
170
|
+
--target-account <target_acct_id> \
|
|
171
|
+
--assigned-user <target_account_user_id|me> \
|
|
172
|
+
--target-motion <target_motn_id> \
|
|
173
|
+
--target-list <target_list_id> \
|
|
174
|
+
--json
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Omit mappings that were not explicitly chosen; never infer a target motion,
|
|
178
|
+
list, agent, or research mapping by name. Apply only after the preview is
|
|
179
|
+
eligible and the user authorizes the move:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
audienti prospects move-account <prsp_id> \
|
|
183
|
+
--account <source_acct_id> \
|
|
184
|
+
--target-account <target_acct_id> \
|
|
185
|
+
--assigned-user <target_account_user_id|me> \
|
|
186
|
+
--target-motion <target_motn_id> \
|
|
187
|
+
--target-list <target_list_id> \
|
|
188
|
+
--apply \
|
|
189
|
+
--json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
With `--apply`, the CLI performs a fresh preview and submits that response's
|
|
193
|
+
`manifest_digest`; it does not reuse an older preview. Treat a stale manifest,
|
|
194
|
+
any blocker, or any failed response as not applied, then inspect current source
|
|
195
|
+
and target state before retrying.
|
|
196
|
+
|
|
197
|
+
## Account-User Automation Safety
|
|
198
|
+
|
|
199
|
+
`audienti users automation show <account_user_id|me>` resolves one connected
|
|
200
|
+
account through the selected account, account user, and LinkedIn platform. Use
|
|
201
|
+
per-command `--account` for administrative inspection without changing the
|
|
202
|
+
saved default. Fail closed on API ambiguity or missing access; do not substitute
|
|
203
|
+
another connected account.
|
|
204
|
+
|
|
205
|
+
Automation updates are preview-first:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
audienti users automation show 136 --platform linkedin --json --account acct_example
|
|
209
|
+
audienti users automation update 136 --payload automation-controls.json --json --account acct_example
|
|
210
|
+
audienti users automation update 136 --payload automation-controls.json --apply --json --account acct_example
|
|
211
|
+
audienti users automation show 136 --platform linkedin --json --account acct_example
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
The payload object accepts `automation_controls`, `action_limits`, and
|
|
215
|
+
`visibility_ramp`. Action-limit keys are `profile_view`, `follow`, `like`,
|
|
216
|
+
`invite`, `message`, `comment`, and aggregate `visibility`; each action limit
|
|
217
|
+
may provide `hourly`, `daily`, and `weekly`. `follow` covers follow/unfollow,
|
|
218
|
+
`like` covers like/unlike, and `message` covers messages/InMail. A ramp accepts
|
|
219
|
+
`enabled`, `starting_daily_limit`, `weekly_increment`, and optional
|
|
220
|
+
`started_at`.
|
|
221
|
+
|
|
222
|
+
The CLI wraps the file as `{ automation: { ...payload, platform: "linkedin",
|
|
223
|
+
apply: false|true } }`; file values cannot override the command's platform or
|
|
224
|
+
apply decision. Omitted settings are preserved by the server. Use unchanged
|
|
225
|
+
JSON output to compare current, before, and after snapshots, including policy
|
|
226
|
+
source, schedule/timezone, configured/default/effective limits, used and
|
|
227
|
+
remaining capacity, binding limits, preview/applied state, and applied audit id.
|
|
228
|
+
|
|
229
|
+
For a new account, keep contact and writing controls disabled, enable risk
|
|
230
|
+
cooldown, and bound `visibility` to the authorized active-day warm-up level.
|
|
231
|
+
Never infer that `ready: true`, paused motions, or prepared queue work authorizes
|
|
232
|
+
provider execution.
|
|
233
|
+
|
|
135
234
|
List routing-rule create and update commands accept the same normalized
|
|
136
235
|
condition and action data as the list UI. Inspect the ordered rules first, use
|
|
137
236
|
`audienti lists routing-rules help` for the payload contract, and treat `apply`
|
package/src/api-client.js
CHANGED
|
@@ -51,6 +51,17 @@ export class AudientiClient {
|
|
|
51
51
|
return this.requestJson(accountPath(accountId, ["users"]));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
userAutomation(accountId, userId, query = {}) {
|
|
55
|
+
return this.requestJson(accountPath(accountId, ["users", userId, "automation"], query));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
updateUserAutomation(accountId, userId, body, query = {}) {
|
|
59
|
+
return this.requestJson(accountPath(accountId, ["users", userId, "automation"], query), {
|
|
60
|
+
method: "PATCH",
|
|
61
|
+
body
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
54
65
|
socialCookies(accountId, query = {}) {
|
|
55
66
|
return this.requestJson(accountPath(accountId, ["social_cookies"], query));
|
|
56
67
|
}
|
|
@@ -87,8 +98,8 @@ export class AudientiClient {
|
|
|
87
98
|
});
|
|
88
99
|
}
|
|
89
100
|
|
|
90
|
-
icps(accountId) {
|
|
91
|
-
return this.requestJson(accountPath(accountId, ["icps"]));
|
|
101
|
+
icps(accountId, query = {}) {
|
|
102
|
+
return this.requestJson(accountPath(accountId, ["icps"], query));
|
|
92
103
|
}
|
|
93
104
|
|
|
94
105
|
icp(accountId, icpId) {
|
|
@@ -109,6 +120,20 @@ export class AudientiClient {
|
|
|
109
120
|
});
|
|
110
121
|
}
|
|
111
122
|
|
|
123
|
+
archiveIcp(accountId, icpId) {
|
|
124
|
+
return this.requestJson(accountPath(accountId, ["icps", icpId, "archive"]), {
|
|
125
|
+
method: "POST",
|
|
126
|
+
body: {}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
restoreIcp(accountId, icpId) {
|
|
131
|
+
return this.requestJson(accountPath(accountId, ["icps", icpId, "restore"]), {
|
|
132
|
+
method: "POST",
|
|
133
|
+
body: {}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
112
137
|
addIcpTag(accountId, icpId, body) {
|
|
113
138
|
return this.requestJson(accountPath(accountId, ["icps", icpId, "add_tag"]), {
|
|
114
139
|
method: "POST",
|
|
@@ -467,6 +492,13 @@ export class AudientiClient {
|
|
|
467
492
|
return this.requestJson(accountPath(accountId, ["prospects", prospectId]));
|
|
468
493
|
}
|
|
469
494
|
|
|
495
|
+
moveProspectAccount(accountId, prospectId, body) {
|
|
496
|
+
return this.requestJson(accountPath(accountId, ["prospects", prospectId, "move_account"]), {
|
|
497
|
+
method: "POST",
|
|
498
|
+
body
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
|
|
470
502
|
replanProspect(accountId, prospectId, body = {}) {
|
|
471
503
|
return this.requestJson(accountPath(accountId, ["prospects", prospectId, "replan"]), {
|
|
472
504
|
method: "POST",
|
|
@@ -625,6 +657,17 @@ export class AudientiClient {
|
|
|
625
657
|
return this.requestJson(accountPath(accountId, ["operator"], query));
|
|
626
658
|
}
|
|
627
659
|
|
|
660
|
+
inboxOpsFilters(accountId) {
|
|
661
|
+
return this.requestJson(accountPath(accountId, ["inbox_ops", "filters"]));
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
updateInboxOpsRule(accountId, rowId, body) {
|
|
665
|
+
return this.requestJson(accountPath(accountId, ["inbox_ops", rowId, "rule"]), {
|
|
666
|
+
method: "PATCH",
|
|
667
|
+
body
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
|
|
628
671
|
operatorNext(accountId, query = {}) {
|
|
629
672
|
return this.requestJson(accountPath(accountId, ["operator", "next"], query));
|
|
630
673
|
}
|
|
@@ -663,6 +706,14 @@ export class AudientiClient {
|
|
|
663
706
|
return this.requestJson(accountPath(accountId, ["analytics", "dashboard"], query));
|
|
664
707
|
}
|
|
665
708
|
|
|
709
|
+
analyticsMotions(accountId) {
|
|
710
|
+
return this.requestJson(accountPath(accountId, ["analytics", "motions"]));
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
analyticsIcps(accountId) {
|
|
714
|
+
return this.requestJson(accountPath(accountId, ["analytics", "icps"]));
|
|
715
|
+
}
|
|
716
|
+
|
|
666
717
|
analyticsMetrics(accountId, query = {}) {
|
|
667
718
|
return this.requestJson(accountPath(accountId, ["analytics", "metrics"], query));
|
|
668
719
|
}
|