kenso 0.1.16 → 0.1.17
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/dist/kenso.js +170 -71
- package/dist/operations.json +1 -1
- package/docs/crm.md +6 -32
- package/docs/leads.md +4 -4
- package/docs/reference.md +66 -27
- package/package.json +2 -2
- package/skill/kenso-cli/SKILL.md +16 -15
package/docs/crm.md
CHANGED
|
@@ -29,15 +29,7 @@ Globex,globex.com,Manufacturing,"1,200"
|
|
|
29
29
|
- **The dry run prices the research.** It asks for a credit estimate per 1,000 accounts and puts the sum in the plan: `kind`, `accountCount`, `totalMillicredits`, `availableMillicredits` and `sufficient`.
|
|
30
30
|
- **Rows go 100 per call** to `POST /v1/accounts/bulk-create`.
|
|
31
31
|
|
|
32
|
-
Each row comes back:
|
|
33
|
-
|
|
34
|
-
| Status | Meaning |
|
|
35
|
-
|---|---|
|
|
36
|
-
| `created` | A new account; `id` is the account id. Research is queued (`researchQueued` in the summary), or waits for credits (`researchWaitingCredits`) |
|
|
37
|
-
| `skipped`, reason `domain_taken` | A company that is already an account; `id` is that account |
|
|
38
|
-
| `failed` | Kenso refused the row (`reason` is the API's code, `error` names the field) or failed to save it. An item Kenso failed to save is sent once more before it counts as failed |
|
|
39
|
-
|
|
40
|
-
Rerunning the same file is safe: accounts that exist come back `domain_taken`.
|
|
32
|
+
Each row comes back `created` (`id` is the new account; its research is queued, `researchQueued`, or waits for credits, `researchWaitingCredits`), `skipped` with reason `domain_taken` (already an account; `id` is that account) or `failed` (`reason` is the API's code, `error` names the field; an item Kenso failed to save is sent once more first). Rerunning the same file is safe: accounts that exist come back `domain_taken`.
|
|
41
33
|
|
|
42
34
|
## Import people
|
|
43
35
|
|
|
@@ -59,29 +51,16 @@ Bob Ray,,CTO,acme.io,
|
|
|
59
51
|
- **`--find-emails`** queues an email find (charged in credits) for each person without an email.
|
|
60
52
|
- **Rows go 200 per call** to `POST /v1/people/batch`.
|
|
61
53
|
|
|
62
|
-
People already in the workspace are matched by email, then LinkedIn URL, so running the same file again creates nobody twice.
|
|
63
|
-
|
|
64
|
-
| Result | Row status | reason |
|
|
65
|
-
|---|---|---|
|
|
66
|
-
| A new person | `created` | |
|
|
67
|
-
| An existing person, added to the account | `updated` | |
|
|
68
|
-
| An existing person already on the account | `skipped` | `already_on_account` |
|
|
69
|
-
| An existing person, no account asked | `skipped` | `matched` |
|
|
70
|
-
| The person was removed from the account before | `skipped` | `previously_removed` |
|
|
71
|
-
| The account does not exist | `failed` | `account_not_found`: the person was saved without an account. Import the account, then rerun to place them |
|
|
72
|
-
| Kenso refused the row | `failed` | the API's reason |
|
|
73
|
-
|
|
74
|
-
The summary adds `matched`, `addedToAccounts` and `emailFindsQueued`.
|
|
54
|
+
People already in the workspace are matched by email, then LinkedIn URL, so running the same file again creates nobody twice. A row comes back `created` (a new person), `updated` (an existing person added to the account), `skipped` with reason `already_on_account`, `matched` (no account asked) or `previously_removed`, or `failed`: `account_not_found` saves the person without an account (import the account, then rerun to place them), any other reason is the API's. The summary adds `matched`, `addedToAccounts` and `emailFindsQueued`.
|
|
75
55
|
|
|
76
56
|
## Edit accounts, people and opportunities
|
|
77
57
|
|
|
78
58
|
Apart from `accounts bulk-update`, which sets one `accountType` on up to 500 accounts, there is no bulk edit route, so run the generated `update` command once per row with `--each`. Columns are the command's flags by API name or flag name, and the id column fills the route:
|
|
79
59
|
|
|
80
60
|
```bash
|
|
81
|
-
kenso accounts update --each accounts-edit.csv --dry-run
|
|
82
|
-
kenso
|
|
83
|
-
kenso
|
|
84
|
-
kenso opportunities update --each deals.csv --yes
|
|
61
|
+
kenso accounts update --each accounts-edit.csv --dry-run # then the same with --yes
|
|
62
|
+
kenso people update --each people-edit.csv --dry-run
|
|
63
|
+
kenso opportunities update --each deals.csv --dry-run
|
|
85
64
|
```
|
|
86
65
|
|
|
87
66
|
```csv
|
|
@@ -90,12 +69,7 @@ accountId,stage,ownerMemberId,overwritePinned
|
|
|
90
69
|
502,customer,42,true
|
|
91
70
|
```
|
|
92
71
|
|
|
93
|
-
A row that changes a field someone pinned in the app fails as a whole (`409 conflict`, `pinned_by_user`: nothing on that record changes, the other fields of the row included), unless the row sets `overwritePinned` to `true` (or you pass `--overwrite-pinned
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
kenso describe accounts update
|
|
97
|
-
kenso accounts update --help
|
|
98
|
-
```
|
|
72
|
+
A row that changes a field someone pinned in the app fails as a whole (`409 conflict`, `pinned_by_user`: nothing on that record changes, the other fields of the row included), unless the row sets `overwritePinned` to `true` (or you pass `--overwrite-pinned`, only with the person's OK). Every flag of an update command: `kenso accounts update --help`.
|
|
99
73
|
|
|
100
74
|
## CRM sync
|
|
101
75
|
|
package/docs/leads.md
CHANGED
|
@@ -144,13 +144,13 @@ printf 'id,title\n9001,VP Sales\n' | kenso contacts update --file - --match id -
|
|
|
144
144
|
|
|
145
145
|
## Remove, restore, pause and resume
|
|
146
146
|
|
|
147
|
-
These four take contact ids from `--ids` (one id per line, or a CSV or JSONL file with an `id` or `contactId` column, or `-` for stdin), or from a search with `--where` (remove, pause and resume). `--where` takes the body of `POST /v1/contacts/search` as JSON, `@file` or `-`, and does the search itself: its plan shows how many contacts match and the first ids, so run no separate search or list first.
|
|
147
|
+
These four take contact ids from `--ids` (one id per line, or a CSV or JSONL file with an `id` or `contactId` column, or `-` for stdin), or from a search with `--where` (remove, pause and resume). `--where` takes the body of `POST /v1/contacts/search` as JSON, `@file` or `-`, and does the search itself: its plan shows how many contacts match and the first ids, so run no separate search or list first. `q` matches names and email addresses only; a company is a `filters` condition on `ContactCompany.Name` (`operator` 2 is contains; `kenso describe contacts search` lists the fields and operators).
|
|
148
148
|
|
|
149
149
|
```bash
|
|
150
|
-
kenso contacts remove --ids ids.txt
|
|
150
|
+
kenso contacts remove --ids ids.txt --dry-run
|
|
151
151
|
kenso contacts remove --ids ids.txt --yes
|
|
152
|
-
kenso contacts remove --where '{"campaignIds": [812], "
|
|
153
|
-
kenso contacts remove --where '{"campaignIds": [812], "
|
|
152
|
+
kenso contacts remove --where '{"campaignIds": [812], "filters": [{"conditions": {"field": "ContactCompany.Name", "operator": 2, "value": "acme"}}]}' --dry-run
|
|
153
|
+
kenso contacts remove --where '{"campaignIds": [812], "filters": [{"conditions": {"field": "ContactCompany.Name", "operator": 2, "value": "acme"}}]}' --yes
|
|
154
154
|
kenso contacts remove --ids big.csv --confirm 2500 --yes
|
|
155
155
|
```
|
|
156
156
|
|
package/docs/reference.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Kenso CLI command reference
|
|
2
2
|
|
|
3
|
-
Generated from kenso 0.1.
|
|
3
|
+
Generated from kenso 0.1.17 (API contracts 2b8736a3a88d) by `scripts/build-reference.ts`. Do not edit it: `pnpm build` writes it again.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
1376 commands, one entry each: summary, API route, feature gate and flag names. Beta commands work only on workspaces with their feature flag; `kenso describe` hides the ones yours cannot use. Every command also takes the global flags below. A command's notes, flag descriptions, body schema and examples: `kenso <resource> <action> --help`, or `kenso describe <resource> <action>` as JSON.
|
|
6
6
|
|
|
7
7
|
## Global flags
|
|
8
8
|
|
|
@@ -39,6 +39,7 @@ Exit codes: 0 ok, 1 error, 2 usage, 3 auth, 4 not found, 5 some rows failed, 6 r
|
|
|
39
39
|
- [agent-team](#agent-team) (9)
|
|
40
40
|
- [ai-assist-reservations](#ai-assist-reservations) (1)
|
|
41
41
|
- [ai-cost-estimate](#ai-cost-estimate) (1)
|
|
42
|
+
- [ai-feedback](#ai-feedback) (4)
|
|
42
43
|
- [ai-line-holds](#ai-line-holds) (2)
|
|
43
44
|
- [ai-lines](#ai-lines) (3)
|
|
44
45
|
- [ai-runs](#ai-runs) (5)
|
|
@@ -238,7 +239,7 @@ Exit codes: 0 ok, 1 error, 2 usage, 3 auth, 4 not found, 5 some rows failed, 6 r
|
|
|
238
239
|
- [mcp-server-authorizations](#mcp-server-authorizations) (2)
|
|
239
240
|
- [mcp-server-presets](#mcp-server-presets) (1)
|
|
240
241
|
- [mcp-servers](#mcp-servers) (9)
|
|
241
|
-
- [me](#me) (
|
|
242
|
+
- [me](#me) (31)
|
|
242
243
|
- [meeting-notes](#meeting-notes) (4)
|
|
243
244
|
- [meeting-recordings](#meeting-recordings) (1)
|
|
244
245
|
- [meeting-result-hints](#meeting-result-hints) (3)
|
|
@@ -792,6 +793,32 @@ Estimate prompt tokens and list the models a flow can use. `GET /v1/campaigns/{c
|
|
|
792
793
|
|
|
793
794
|
Flags: `--campaign-id` (required), `--flow`, `--segment-id`, `--each`, `--concurrency`.
|
|
794
795
|
|
|
796
|
+
## ai-feedback
|
|
797
|
+
|
|
798
|
+
### kenso ai-feedback create
|
|
799
|
+
|
|
800
|
+
Rate an AI output. `POST /v1/ai-feedback`. Beta: needs `ai_feedback`.
|
|
801
|
+
|
|
802
|
+
Flags: `--surface`, `--target-ref`, `--rating`, `--note`, `--output-snapshot`, `--trace-id`, `--data`, `--each`, `--concurrency`.
|
|
803
|
+
|
|
804
|
+
### kenso ai-feedback delete
|
|
805
|
+
|
|
806
|
+
Clear one of the caller's ratings. `DELETE /v1/ai-feedback/{feedbackId}`. Beta: needs `ai_feedback`.
|
|
807
|
+
|
|
808
|
+
Flags: `--feedback-id` (required), `--each`, `--concurrency`.
|
|
809
|
+
|
|
810
|
+
### kenso ai-feedback get
|
|
811
|
+
|
|
812
|
+
Get one of the caller's ratings. `GET /v1/ai-feedback/{feedbackId}`. Beta: needs `ai_feedback`.
|
|
813
|
+
|
|
814
|
+
Flags: `--feedback-id` (required), `--each`, `--concurrency`.
|
|
815
|
+
|
|
816
|
+
### kenso ai-feedback signal
|
|
817
|
+
|
|
818
|
+
Record that the caller regenerated a Ken draft or suggestion. `POST /v1/ai-feedback/signals`. Beta: needs `ai_feedback`.
|
|
819
|
+
|
|
820
|
+
Flags: `--surface`, `--target-ref`, `--signal`, `--data`, `--each`, `--concurrency`.
|
|
821
|
+
|
|
795
822
|
## ai-line-holds
|
|
796
823
|
|
|
797
824
|
### kenso ai-line-holds approve
|
|
@@ -912,7 +939,7 @@ Flags: `--campaign-id`, `--country`, `--dimension`, `--from`, `--limit`, `--segm
|
|
|
912
939
|
|
|
913
940
|
Get reply classifications. `GET /v1/analytics/reply-classifications`.
|
|
914
941
|
|
|
915
|
-
Flags: `--by-campaign`, `--by-
|
|
942
|
+
Flags: `--by-campaign`, `--by-segment`, `--campaign-id`, `--from`, `--segment-id`, `--time-zone`, `--to`, `--no-by-campaign`, `--no-by-segment`, `--each`, `--concurrency`.
|
|
916
943
|
|
|
917
944
|
### kenso analytics get-variant-performance
|
|
918
945
|
|
|
@@ -956,7 +983,7 @@ Flags: `--answer-id` (required), `--each`, `--concurrency`.
|
|
|
956
983
|
|
|
957
984
|
### kenso api
|
|
958
985
|
|
|
959
|
-
Call any
|
|
986
|
+
Call any API route, only when no command fits.
|
|
960
987
|
|
|
961
988
|
Arguments: `<METHOD>`, `<path>`.
|
|
962
989
|
|
|
@@ -1412,17 +1439,17 @@ Flags: `--action`, `--cursor`, `--limit`, `--occurred-after`, `--occurred-before
|
|
|
1412
1439
|
|
|
1413
1440
|
### kenso auth login
|
|
1414
1441
|
|
|
1415
|
-
Save an API key
|
|
1442
|
+
Save an API key (--with-key reads it from stdin: pipe a variable in, no check first). `GET /v1/me`.
|
|
1416
1443
|
|
|
1417
1444
|
Flags: `--device-name`, `--no-browser`, `--with-key`.
|
|
1418
1445
|
|
|
1419
1446
|
### kenso auth logout
|
|
1420
1447
|
|
|
1421
|
-
Remove a saved profile and its key
|
|
1448
|
+
Remove a saved profile and its key.
|
|
1422
1449
|
|
|
1423
1450
|
### kenso auth status
|
|
1424
1451
|
|
|
1425
|
-
Show
|
|
1452
|
+
Show the key's user, workspace and expiry. API operations: `me.get`, `api-keys.list`.
|
|
1426
1453
|
|
|
1427
1454
|
## auto-pauses
|
|
1428
1455
|
|
|
@@ -2922,7 +2949,7 @@ Flags: `--contact-id` (required), `--cursor`, `--limit`, `--occurred-after`, `--
|
|
|
2922
2949
|
|
|
2923
2950
|
### kenso contacts export
|
|
2924
2951
|
|
|
2925
|
-
Export a campaign's contacts to
|
|
2952
|
+
Export a campaign's contacts to CSV (a segment: contact-exports create). API operations: `contact-exports.create`, `jobs.get`, `contact-exports.content`.
|
|
2926
2953
|
|
|
2927
2954
|
Flags: `--campaign`, `--out`, `--timeout`, `--wait`.
|
|
2928
2955
|
|
|
@@ -2934,7 +2961,7 @@ Flags: `--contact-id` (required), `--each`, `--concurrency`.
|
|
|
2934
2961
|
|
|
2935
2962
|
### kenso contacts import
|
|
2936
2963
|
|
|
2937
|
-
Add leads from a CSV or JSONL file to a campaign
|
|
2964
|
+
Add leads from a CSV or JSONL file to a campaign. API operations: `contacts.create`, `campaigns.get`, `credit-estimates.create`, `contact-imports.create`, `jobs.get`.
|
|
2938
2965
|
|
|
2939
2966
|
Flags: `--campaign`, `--file`, `--map`, `--out`, `--server-import`, `--template`, `--timeout`.
|
|
2940
2967
|
|
|
@@ -2952,7 +2979,7 @@ Flags: `--contact-id` (required), `--each`, `--concurrency`.
|
|
|
2952
2979
|
|
|
2953
2980
|
### kenso contacts pause
|
|
2954
2981
|
|
|
2955
|
-
Pause the campaign sequence of contacts by
|
|
2982
|
+
Pause the campaign sequence of contacts by --ids file or --where filters. API operations: `contacts.bulk-pause`, `contacts.search`. Beta: needs `pause_leads`.
|
|
2956
2983
|
|
|
2957
2984
|
Flags: `--concurrency`, `--ids`, `--out`, `--where`.
|
|
2958
2985
|
|
|
@@ -2964,19 +2991,19 @@ Flags: `--stage`, `--data`, `--each`, `--concurrency`.
|
|
|
2964
2991
|
|
|
2965
2992
|
### kenso contacts remove
|
|
2966
2993
|
|
|
2967
|
-
Remove (soft-delete) contacts by
|
|
2994
|
+
Remove (soft-delete) contacts by --ids file or --where filters. API operations: `contacts.bulk-delete`, `contacts.search`.
|
|
2968
2995
|
|
|
2969
2996
|
Flags: `--concurrency`, `--confirm`, `--ids`, `--out`, `--where`.
|
|
2970
2997
|
|
|
2971
2998
|
### kenso contacts restore
|
|
2972
2999
|
|
|
2973
|
-
Restore removed contacts by
|
|
3000
|
+
Restore removed contacts by --ids or by a remove run (--run). `POST /v1/contacts/bulk-restore`.
|
|
2974
3001
|
|
|
2975
3002
|
Flags: `--concurrency`, `--ids`, `--out`, `--run`.
|
|
2976
3003
|
|
|
2977
3004
|
### kenso contacts resume
|
|
2978
3005
|
|
|
2979
|
-
Resume the paused sequence of contacts by
|
|
3006
|
+
Resume the paused sequence of contacts by --ids file or --where filters. API operations: `contacts.bulk-resume`, `contacts.search`.
|
|
2980
3007
|
|
|
2981
3008
|
Flags: `--concurrency`, `--ids`, `--out`, `--where`.
|
|
2982
3009
|
|
|
@@ -2988,19 +3015,19 @@ Flags: `--company-id`, `--segment-id`, `--email`, `--q`, `--is-qualified`, `--do
|
|
|
2988
3015
|
|
|
2989
3016
|
### kenso contacts tag
|
|
2990
3017
|
|
|
2991
|
-
Add a tag to contacts by
|
|
3018
|
+
Add a tag to contacts by --ids only (a campaign: list its ids first). `POST /v1/tags/{tagId}/assignments`.
|
|
2992
3019
|
|
|
2993
3020
|
Flags: `--concurrency`, `--ids`, `--out`, `--tag`.
|
|
2994
3021
|
|
|
2995
3022
|
### kenso contacts untag
|
|
2996
3023
|
|
|
2997
|
-
Remove a tag from contacts by
|
|
3024
|
+
Remove a tag from contacts by --ids only (a campaign: list its ids first). `DELETE /v1/tags/{tagId}/assignments`.
|
|
2998
3025
|
|
|
2999
3026
|
Flags: `--concurrency`, `--ids`, `--out`, `--tag`.
|
|
3000
3027
|
|
|
3001
3028
|
### kenso contacts update
|
|
3002
3029
|
|
|
3003
|
-
Edit leads from a CSV or JSONL file,
|
|
3030
|
+
Edit leads from a CSV or JSONL file, by id or email (also one lead). API operations: `contacts.bulk-update`, `contacts.list`.
|
|
3004
3031
|
|
|
3005
3032
|
Flags: `--campaign`, `--concurrency`, `--file`, `--map`, `--match`, `--out`.
|
|
3006
3033
|
|
|
@@ -3276,7 +3303,7 @@ Flags: `--months`, `--data`, `--each`, `--concurrency`.
|
|
|
3276
3303
|
|
|
3277
3304
|
### kenso describe
|
|
3278
3305
|
|
|
3279
|
-
|
|
3306
|
+
The command map as JSON: commands, flags, body schemas.
|
|
3280
3307
|
|
|
3281
3308
|
Arguments: `<resource>` (optional), `<action>` (optional).
|
|
3282
3309
|
|
|
@@ -3362,7 +3389,7 @@ Flags: `--each`, `--concurrency`.
|
|
|
3362
3389
|
|
|
3363
3390
|
### kenso docs
|
|
3364
3391
|
|
|
3365
|
-
|
|
3392
|
+
Offline docs: the topic list, or one topic.
|
|
3366
3393
|
|
|
3367
3394
|
Arguments: `<topic>` (optional).
|
|
3368
3395
|
|
|
@@ -3370,7 +3397,7 @@ Arguments: `<topic>` (optional).
|
|
|
3370
3397
|
|
|
3371
3398
|
### kenso doctor
|
|
3372
3399
|
|
|
3373
|
-
Check
|
|
3400
|
+
Check Node, the config, the API and the key. `GET /v1/me`.
|
|
3374
3401
|
|
|
3375
3402
|
## domain-health-checks
|
|
3376
3403
|
|
|
@@ -4398,7 +4425,7 @@ Flags: `--cursor`, `--limit`, `--status`, `--type`, `--all`, `--each`, `--concur
|
|
|
4398
4425
|
|
|
4399
4426
|
### kenso jobs wait
|
|
4400
4427
|
|
|
4401
|
-
Wait for a background job
|
|
4428
|
+
Wait for a background job and print it. `GET /v1/jobs/{jobId}`.
|
|
4402
4429
|
|
|
4403
4430
|
Arguments: `<jobId>`.
|
|
4404
4431
|
|
|
@@ -5208,7 +5235,7 @@ Flags: `--cursor`, `--limit`, `--all`, `--each`, `--concurrency`.
|
|
|
5208
5235
|
|
|
5209
5236
|
### kenso mcp call
|
|
5210
5237
|
|
|
5211
|
-
Call a hosted Kenso MCP tool, such as list_skills
|
|
5238
|
+
Call a hosted Kenso MCP tool, such as list_skills (no mcp tools first).
|
|
5212
5239
|
|
|
5213
5240
|
Arguments: `<tool>`.
|
|
5214
5241
|
|
|
@@ -5332,6 +5359,12 @@ Get the signed-in caller. `GET /v1/me`.
|
|
|
5332
5359
|
|
|
5333
5360
|
Flags: `--each`, `--concurrency`.
|
|
5334
5361
|
|
|
5362
|
+
### kenso me get-ai-feedback-state
|
|
5363
|
+
|
|
5364
|
+
Get the caller's AI feedback state. `GET /v1/me/ai-feedback-state`. Beta: needs `ai_feedback`.
|
|
5365
|
+
|
|
5366
|
+
Flags: `--each`, `--concurrency`.
|
|
5367
|
+
|
|
5335
5368
|
### kenso me get-booking-settings
|
|
5336
5369
|
|
|
5337
5370
|
Get my booking settings. `GET /v1/me/booking-settings`. Beta: needs `scheduler`.
|
|
@@ -5452,6 +5485,12 @@ Update the caller's profile. `PATCH /v1/me`.
|
|
|
5452
5485
|
|
|
5453
5486
|
Flags: `--linkedin-url`, `--first-name`, `--last-name`, `--job-title`, `--time-zone`, `--language`, `--data`, `--each`, `--concurrency`.
|
|
5454
5487
|
|
|
5488
|
+
### kenso me update-ai-feedback-state
|
|
5489
|
+
|
|
5490
|
+
Dismiss the coach mark or record the heavy-edit toast. `PATCH /v1/me/ai-feedback-state`. Beta: needs `ai_feedback`.
|
|
5491
|
+
|
|
5492
|
+
Flags: `--coach-mark-dismissed`, `--heavy-edit-prompted`, `--no-coach-mark-dismissed`, `--no-heavy-edit-prompted`, `--data`, `--each`, `--concurrency`.
|
|
5493
|
+
|
|
5455
5494
|
### kenso me update-booking-settings
|
|
5456
5495
|
|
|
5457
5496
|
Update my booking settings. `PATCH /v1/me/booking-settings`. Beta: needs `scheduler`.
|
|
@@ -6970,19 +7009,19 @@ Flags: `--role-id` (required), `--title`, `--company-name`, `--company-domain`,
|
|
|
6970
7009
|
|
|
6971
7010
|
### kenso runs list
|
|
6972
7011
|
|
|
6973
|
-
List batch runs, newest first.
|
|
7012
|
+
List batch runs, newest first (finds an interrupted run).
|
|
6974
7013
|
|
|
6975
7014
|
Flags: `--limit`.
|
|
6976
7015
|
|
|
6977
7016
|
### kenso runs resume
|
|
6978
7017
|
|
|
6979
|
-
Continue
|
|
7018
|
+
Continue an interrupted batch run (its command with --yes, no dry run).
|
|
6980
7019
|
|
|
6981
7020
|
Arguments: `<runId>`.
|
|
6982
7021
|
|
|
6983
7022
|
### kenso runs show
|
|
6984
7023
|
|
|
6985
|
-
Show one batch run
|
|
7024
|
+
Show one batch run and its files.
|
|
6986
7025
|
|
|
6987
7026
|
Arguments: `<runId>`.
|
|
6988
7027
|
|
|
@@ -7728,7 +7767,7 @@ Flags: `--is-synthetic`, `--no-is-synthetic`, `--data`, `--each`, `--concurrency
|
|
|
7728
7767
|
|
|
7729
7768
|
### kenso skill install
|
|
7730
7769
|
|
|
7731
|
-
Install the kenso-cli
|
|
7770
|
+
Install the kenso-cli skill for Claude Code, Codex or Cursor.
|
|
7732
7771
|
|
|
7733
7772
|
Flags: `--client`, `--dir`, `--force`.
|
|
7734
7773
|
|
|
@@ -9148,7 +9187,7 @@ Flags: `--all`, `--limit`, `--q`.
|
|
|
9148
9187
|
|
|
9149
9188
|
### kenso workspace use
|
|
9150
9189
|
|
|
9151
|
-
|
|
9190
|
+
Set the profile's default workspace. `GET /v1/workspaces/{workspaceId}`.
|
|
9152
9191
|
|
|
9153
9192
|
Arguments: `<workspaceId>`.
|
|
9154
9193
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kenso",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "The Kenso CLI: bulk lead, CRM and Studio work for people and coding agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"typescript-eslint": "8.71.1",
|
|
45
45
|
"vitest": "5.0.3"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "4b7b6d671753dee817768174b36add31a0a6897e"
|
|
48
48
|
}
|
package/skill/kenso-cli/SKILL.md
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kenso-cli
|
|
3
|
-
description: The Kenso CLI (kenso) for work from a file or over about 50 records - import, update, remove, pause, tag or export leads, import CRM accounts and people, edit Studio templates as local files and fill them, run an API operation per file row. For one record or a question, use the Kenso MCP.
|
|
3
|
+
description: The Kenso CLI (kenso) for work from a file (of any size, even a few ids) or over about 50 records - import, update, remove (delete), pause, tag or export leads, import CRM accounts and people, edit Studio templates as local files and fill them, run an API operation per file row, resume an interrupted run, sign in with a key from a variable (pipe it to kenso auth login --with-key, no check first). For records listed in the message (under about 50), one record or a question, use the Kenso MCP.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
1. Every write runs first with `--dry-run
|
|
7
|
-
2. Many rows
|
|
8
|
-
3.
|
|
9
|
-
4. Ids are flags: `--campaign 812` on contacts import, update, export; `--campaign-id 812` on API commands
|
|
6
|
+
1. Every write runs first with `--dry-run`; apply with the plan's `next`. `--yes` at once only to continue an interrupted run or apply what the person confirmed.
|
|
7
|
+
2. Many rows: one command on the file as it is (`--file`, `--ids`, `--each`). Run kenso only: no python, awk or shell tests, not even on a file or variable.
|
|
8
|
+
3. Any output's `next` is the command to run; errors are JSON on stderr. `--force` only with the person's OK.
|
|
9
|
+
4. Ids are flags: `--campaign 812` on contacts import, update, export; `--campaign-id 812` on API commands. `--workspace <id>`; by name `kenso workspace list --q acme`. Other commands: `kenso --help`; `kenso api <METHOD> <path>` only when none fits.
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
kenso contacts import --campaign 812 --file leads.csv --dry-run # skips leads already in; --map '{"Pain": "customVariables.pain_point", "Notes": null}'; over 200 MB --server-import
|
|
13
|
-
kenso contacts update --file edits.csv --match id --dry-run # also one
|
|
14
|
-
kenso contacts remove --ids ids.txt --dry-run #
|
|
15
|
-
kenso contacts remove --where '{"campaignIds": [812], "
|
|
16
|
-
kenso contacts
|
|
13
|
+
kenso contacts update --file edits.csv --match id --dry-run # also one lead; or --match email --campaign 812
|
|
14
|
+
kenso contacts remove --ids ids.txt --dry-run # also pause, resume, restore; over 1,000: --confirm <count>
|
|
15
|
+
kenso contacts remove --where '{"campaignIds": [812], "filters": [{"conditions": {"field": "ContactCompany.Name", "operator": 2, "value": "acme"}}]}' --dry-run # also pause, resume; 2 = contains; no search first
|
|
16
|
+
kenso contacts tag --tag 31 --ids ids.txt --dry-run # tag, restore: --ids only, so first kenso contacts list --campaign-id 812 --all -o ids > ids.txt
|
|
17
|
+
kenso contact-imports create --source campaign --source-campaign-id 10601 --campaign-id 812 --dry-run # copy another campaign's leads in
|
|
17
18
|
kenso contacts export --campaign 812 --out leads.csv # a segment: kenso contact-exports create --segment-id 55
|
|
18
|
-
kenso runs
|
|
19
|
-
kenso accounts import --file accounts.csv --dry-run # companies;
|
|
20
|
-
kenso studio push 12 --dir ./tpl # to preview local edits push first (draft
|
|
19
|
+
kenso runs resume <runId> # an interrupted run; terminal lost: kenso runs list finds it. A changed file is a new run
|
|
20
|
+
kenso accounts import --file accounts.csv --dry-run # companies; a file of people: kenso people import --file people.csv
|
|
21
|
+
kenso studio push 12 --dir ./tpl # to preview local edits push first (draft; live needs --publish), then studio preview 12
|
|
21
22
|
kenso studio fill 12 --accounts ids.txt --dry-run # or --campaign 10546 --contacts leads.csv
|
|
22
|
-
kenso
|
|
23
|
-
kenso mcp call list_skills
|
|
23
|
+
kenso opportunities update --each rows.csv --dry-run # any API command on a file of rows (CSV or JSONL; keys fill flags and body). One record: kenso campaigns update --campaign-id 812 --name Q4 --dry-run
|
|
24
|
+
kenso mcp call list_skills # only to list Ken's skills
|
|
24
25
|
```
|
|
25
26
|
|
|
26
|
-
`accounts import`
|
|
27
|
+
Charges: `accounts import` per new account, `studio fill` per page (again for ids from another file): show the estimate. `pinned_by_user`: with the person's OK, rerun with `--overwrite-pinned`. Workflows: `kenso workflows brief` first; secrets only as `{{secrets.NAME}}`. Key: `KENSO_API_KEY`, or pipe a variable, no check: `printf '%s' "$KEY" | kenso auth login --with-key`; never in a flag, output or file.
|