kenso 0.1.14 → 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/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 accounts update --each accounts-edit.csv --yes
83
- kenso people update --each people-edit.csv --yes
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`). To see every flag of an update command:
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], "q": "acme"}'
153
- kenso contacts remove --where '{"campaignIds": [812], "q": "acme"}' --yes
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.14 (API contracts cd75d09c1648) by `scripts/build-reference.ts`. Do not edit it: `pnpm build` writes it again.
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
- 1370 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.
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
 
@@ -19,7 +19,7 @@ Generated from kenso 0.1.14 (API contracts cd75d09c1648) by `scripts/build-refer
19
19
  | `--progress` | Print progress to stderr even when it is not a terminal |
20
20
  | `--all-commands` | Show beta commands in help |
21
21
  | `-h, --help` | Show help |
22
- | `--version` | Print the version |
22
+ | `--version` | Print the CLI version (only on its own: kenso --version) |
23
23
 
24
24
  Exit codes: 0 ok, 1 error, 2 usage, 3 auth, 4 not found, 5 some rows failed, 6 rate limited or limit reached, 7 conflict, 8 server error, 130 interrupted.
25
25
 
@@ -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) (29)
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-configuration`, `--by-segment`, `--campaign-id`, `--configuration-id`, `--from`, `--segment-id`, `--time-zone`, `--to`, `--no-by-campaign`, `--no-by-configuration`, `--no-by-segment`, `--each`, `--concurrency`.
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 Kenso API route with auth and headers set.
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 on this machine (--with-key reads it from stdin). `GET /v1/me`.
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 from this machine.
1448
+ Remove a saved profile and its key.
1422
1449
 
1423
1450
  ### kenso auth status
1424
1451
 
1425
- Show who the key belongs to, the active workspace and when the key expires. API operations: `me.get`, `api-keys.list`.
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 a CSV file (a segment: kenso contact-exports create). API operations: `contact-exports.create`, `jobs.get`, `contact-exports.content`.
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, with one result per row. API operations: `contacts.create`, `campaigns.get`, `credit-estimates.create`, `contact-imports.create`, `jobs.get`.
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 id (--ids file) or by search (--where), 1,000 per call. API operations: `contacts.bulk-pause`, `contacts.search`. Beta: needs `pause_leads`.
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 id (--ids file) or by search (--where), 1,000 per call. API operations: `contacts.bulk-delete`, `contacts.search`.
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 id (--ids) or by a remove run (--run). `POST /v1/contacts/bulk-restore`.
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 id (--ids file) or by search (--where), 1,000 per call. API operations: `contacts.bulk-resume`, `contacts.search`.
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 id (--ids only: for a campaign, contacts list its ids first). `POST /v1/tags/{tagId}/assignments`.
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 id (--ids only: for a campaign, contacts list its ids first). `DELETE /v1/tags/{tagId}/assignments`.
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, matched by id or by email (also one lead). API operations: `contacts.bulk-update`, `contacts.list`.
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
- Print the command map as JSON: every command, its flags and body schema.
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
- Read the CLI docs offline: the topic list, or one topic as Markdown.
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 the setup: Node, the config file, the API and the key. `GET /v1/me`.
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 to finish and print it. `GET /v1/jobs/{jobId}`.
4428
+ Wait for a background job and print it. `GET /v1/jobs/{jobId}`.
4402
4429
 
4403
4430
  Arguments: `<jobId>`.
4404
4431
 
@@ -4410,13 +4437,13 @@ Flags: `--timeout`, `--type` (required).
4410
4437
 
4411
4438
  Create the Ken chat of an eve session, or return the one that exists. `POST /v1/ken-chats`. Beta: needs `ken_agent`.
4412
4439
 
4413
- Flags: `--eve-session-id`, `--eve-session-ref`, `--title`, `--data`, `--each`, `--concurrency`.
4440
+ Flags: `--eve-session-id`, `--eve-session-ref`, `--title`, `--kind`, `--data`, `--each`, `--concurrency`.
4414
4441
 
4415
4442
  ### kenso ken-chats create-message
4416
4443
 
4417
4444
  Append a message to a Ken chat. `POST /v1/ken-chats/{kenChatId}/messages`. Beta: needs `ken_agent`.
4418
4445
 
4419
- Flags: `--ken-chat-id` (required), `--external-id`, `--role`, `--text`, `--duration-ms`, `--data`, `--each`, `--concurrency`.
4446
+ Flags: `--ken-chat-id` (required), `--external-id`, `--role`, `--text`, `--duration-ms`, `--trace-id`, `--data`, `--each`, `--concurrency`.
4420
4447
 
4421
4448
  ### kenso ken-chats delete
4422
4449
 
@@ -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 or load_skill.
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 a batch run: rerun its command with --yes.
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: its run.json, its last summary and its files.
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 Agent Skill for Claude Code, Codex or Cursor.
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
- Make a workspace the default for the profile. `GET /v1/workspaces/{workspaceId}`.
9190
+ Set the profile's default workspace. `GET /v1/workspaces/{workspaceId}`.
9152
9191
 
9153
9192
  Arguments: `<workspaceId>`.
9154
9193
 
package/docs/studio.md CHANGED
@@ -30,7 +30,7 @@ kenso studio push 12 --dir ./my-template --publish
30
30
 
31
31
  `pull` writes every file of the version under `--dir`: text files from the answer, binaries downloaded from signed links and checked against their SHA-256. It overwrites files with the same path and leaves other files in the folder alone. It checks every path before it writes anything, and refuses one that would land outside `--dir` (`unsafe_path`).
32
32
 
33
- `--template-version` picks the version: `draft`, `latest` (the latest published) or a version id. The default is the draft, else the latest published version. (The flag is not `--version`, which prints the CLI version.)
33
+ `--template-version` picks the version: `draft`, `latest` (the latest published) or a version id. The default is the draft, else the latest published version. (The flag is not `--version`: after a command, `--version` fails with `unknown_flag` and points at `--template-version`.)
34
34
 
35
35
  ```bash
36
36
  kenso studio pull 12 --dir ./v3 --template-version 345
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kenso",
3
- "version": "0.1.14",
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": "89dc1803f304f8225462a7f4129c861c1e329b97"
47
+ "gitHead": "4b7b6d671753dee817768174b36add31a0a6897e"
48
48
  }
@@ -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`, never `--yes`; 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 are one command with the file as it is (`--file`, `--ids`, `--each`), never a command per row. Run kenso only: no python, awk or shell tests, not even on a file or variable.
8
- 3. Errors are JSON on stderr: follow `next`. `--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 (`contacts list`). `--workspace <id>`; by name `kenso workspace list --q acme`.
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 contact; or --match email --campaign 812
14
- kenso contacts remove --ids ids.txt --dry-run # same for pause, resume, restore, tag --tag 31; over 1,000 add --confirm <count>
15
- kenso contacts remove --where '{"campaignIds": [812], "q": "acme"}' --dry-run # also pause, resume; the plan shows the matches: no search first
16
- kenso contacts list --campaign-id 812 --all -o ids > ids.txt # tag and restore take --ids only: list the ids first
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 list # an interrupted run (terminal lost): find it, then kenso runs resume <runId>. A changed file is a new run
19
- kenso accounts import --file accounts.csv --dry-run # companies; people (any file of people) go in with kenso people import --file people.csv
20
- kenso studio push 12 --dir ./tpl # to preview local edits push first (draft only; live needs --publish), then studio preview 12
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 campaigns update --campaign-id 812 --name Q4 --dry-run # any API operation; --each rows.csv for many
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` charges per new account, `studio fill` per page (again for the same ids in another file): show the estimate first. `pinned_by_user`: with the person's OK, `--overwrite-pinned`. Workflows: `kenso workflows brief` first; secrets only as `{{secrets.NAME}}`. Key: `KENSO_API_KEY`, or any variable piped as the first command, no check or printenv (an empty key is refused): `printf '%s' "$KEY" | kenso auth login --with-key`; never in a flag, output or file. `kenso api` only when no command fits. Flags: `kenso <resource> <action> --help`. More: `kenso docs leads|batch|crm|studio`.
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.