autotouch-cli 0.2.28__tar.gz → 0.2.30__tar.gz
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.
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/PKG-INFO +152 -23
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli/cli.py +799 -4
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/PKG-INFO +152 -23
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/SOURCES.txt +1 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/docs/research-table/reference/autotouch-cli.md +151 -22
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/pyproject.toml +1 -1
- autotouch_cli-0.2.30/tests/test_column_prompt_compiler.py +178 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/setup.cfg +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_custom.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_integration.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_multi_titles.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_pipeline.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_simple.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_contactout_v2_bulk.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_lead_required_fields.py +0 -0
- {autotouch_cli-0.2.28 → autotouch_cli-0.2.30}/tests/test_phone_provider_pipeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.30
|
|
4
4
|
Summary: Autotouch Smart Table CLI
|
|
5
5
|
Requires-Python: >=3.9
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -21,7 +21,7 @@ Use this order when you are orienting in the CLI:
|
|
|
21
21
|
2. Use the API endpoint -> CLI command map when translating an existing API workflow.
|
|
22
22
|
3. Use `autotouch columns recipe` before creating provider-backed workflow columns.
|
|
23
23
|
4. Use `autotouch jobs get` as the source of truth for async run state.
|
|
24
|
-
5. Use `autotouch sequences ...` for sequence definitions
|
|
24
|
+
5. Use `autotouch sequences ...` for sequence definitions/enrollments and `autotouch tasks ...` for task queue work.
|
|
25
25
|
|
|
26
26
|
### Quick decision guide
|
|
27
27
|
|
|
@@ -39,17 +39,19 @@ Use this order when you are orienting in the CLI:
|
|
|
39
39
|
| create/manage sequence definitions directly | `autotouch sequences recipe`, then `autotouch sequences create/update/activate` |
|
|
40
40
|
| enroll leads directly into a sequence | `autotouch sequences enroll --sequence-id <SEQUENCE_ID> ...` |
|
|
41
41
|
| enroll table rows into an existing sequence | `autotouch columns recipe --type add_to_sequence`, then `autotouch columns create` + `autotouch columns run` |
|
|
42
|
+
| seed org context from a company website | `autotouch onboarding submit-domain --website acme.com` |
|
|
43
|
+
| inspect or update org/personal value prop context | `autotouch org-context get/set`, `autotouch personal-context get/set`, `autotouch context resolved` |
|
|
42
44
|
| create or update a CRM lead | `autotouch leads recipe --type create`, then `autotouch leads create` / `autotouch leads update` |
|
|
43
45
|
| add email or phone contact info to a lead | `autotouch leads recipe --type contact_upsert`, then `autotouch leads upsert-contact-channels --lead-id <LEAD_ID> ...` |
|
|
44
46
|
| bulk update lead status or owner | `autotouch leads update-status` / `autotouch leads reassign-owner` |
|
|
45
|
-
| manage tasks directly |
|
|
47
|
+
| manage tasks directly | `autotouch tasks query`, `autotouch tasks get`, `autotouch tasks update`, `autotouch tasks draft` |
|
|
46
48
|
| query/filter CRM leads and attached research | `autotouch leads query` then `autotouch leads research` |
|
|
47
49
|
|
|
48
50
|
### Operating model
|
|
49
51
|
|
|
50
52
|
- This file is the full CLI reference and the package readme published to PyPI.
|
|
51
53
|
- The installed package gives you CLI entrypoints and package metadata; do not assume there is a separate installed docs directory.
|
|
52
|
-
- Research-table APIs, sequence commands,
|
|
54
|
+
- Research-table APIs, sequence commands, lead create/query/update operations, and public task-queue workflows are first-class CLI surface areas today.
|
|
53
55
|
- For async operations, backend bulk-job state is authoritative; local terminal output is only a convenience layer.
|
|
54
56
|
- For staged or cost-sensitive runs, estimate first and prefer filtered scopes plus `firstN` or `run-next`.
|
|
55
57
|
|
|
@@ -71,6 +73,12 @@ autotouch auth check
|
|
|
71
73
|
autotouch auth show
|
|
72
74
|
```
|
|
73
75
|
|
|
76
|
+
For user/admin endpoints like onboarding, org context, and personal context, sign in with a user session too:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
autotouch auth login --email ada@yourcompany.com
|
|
80
|
+
```
|
|
81
|
+
|
|
74
82
|
Credentials are stored in `~/.config/autotouch/config.json` by default.
|
|
75
83
|
Override path with `AUTOTOUCH_CONFIG_PATH`.
|
|
76
84
|
|
|
@@ -82,29 +90,46 @@ Developer key scope reference (including workflow scopes like `sequences:*` and
|
|
|
82
90
|
If an agent/user does not have an account + developer key yet, bootstrap both in one call:
|
|
83
91
|
|
|
84
92
|
```bash
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"organization_name": "Your Company",
|
|
93
|
-
"key_name": "Agent bootstrap key"
|
|
94
|
-
}'
|
|
93
|
+
autotouch auth bootstrap \
|
|
94
|
+
--first-name Ada \
|
|
95
|
+
--last-name Lovelace \
|
|
96
|
+
--email ada@yourcompany.com \
|
|
97
|
+
--password 'use-a-strong-random-password' \
|
|
98
|
+
--organization-name "Your Company" \
|
|
99
|
+
--save-key
|
|
95
100
|
```
|
|
96
101
|
|
|
97
|
-
|
|
102
|
+
Or pass a full payload file:
|
|
98
103
|
|
|
99
104
|
```bash
|
|
100
|
-
autotouch auth
|
|
101
|
-
autotouch auth check
|
|
105
|
+
autotouch auth bootstrap --data-file bootstrap.json --save-key
|
|
102
106
|
```
|
|
103
107
|
|
|
104
108
|
Notes:
|
|
105
109
|
- New orgs created through signup/bootstrap start with `50` credits.
|
|
110
|
+
- `--save-key` stores the returned `apiKey` in local CLI config automatically.
|
|
106
111
|
- Identity linking is email-based: later human sign-in with the same normalized email maps to the same user/org.
|
|
107
112
|
|
|
113
|
+
## Onboarding and context
|
|
114
|
+
|
|
115
|
+
Recommended setup for agent-mode LLM enrichment:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
autotouch auth login --email ada@yourcompany.com
|
|
119
|
+
autotouch onboarding submit-domain --website yourcompany.com
|
|
120
|
+
autotouch org-context get
|
|
121
|
+
autotouch personal-context get
|
|
122
|
+
autotouch context resolved
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Notes:
|
|
126
|
+
- `submit-domain` seeds organization context from the company website.
|
|
127
|
+
- `org-context set` is where you refine value proposition, ideal titles, buyer persona, user persona, and voice profile.
|
|
128
|
+
- `personal-context set` is where you refine rep-specific title, territories, personal value proposition, and personal voice profile.
|
|
129
|
+
- `context resolved` shows the effective requester context the enrichment/runtime layer will actually use after org + personal overrides.
|
|
130
|
+
- Agent-mode prompt generation and compiled LLM enrichment prompts always include requester/company context.
|
|
131
|
+
- Basic mode stays manual-prompt-first; write the prompt directly based on the user goal/preferences and include explicit placeholders when row data should be referenced.
|
|
132
|
+
|
|
108
133
|
## API endpoint -> CLI command map
|
|
109
134
|
|
|
110
135
|
| API endpoint | CLI command |
|
|
@@ -170,7 +195,26 @@ Notes:
|
|
|
170
195
|
| `POST /api/webhook-subscriptions/{subscription_id}/resume` | `autotouch webhooks subscriptions resume --subscription-id <SUBSCRIPTION_ID>` |
|
|
171
196
|
| `POST /api/webhook-subscriptions/{subscription_id}/rotate-secret` | `autotouch webhooks subscriptions rotate-secret --subscription-id <SUBSCRIPTION_ID>` |
|
|
172
197
|
| `POST /api/webhook-subscriptions/{subscription_id}/test` | `autotouch webhooks subscriptions test --subscription-id <SUBSCRIPTION_ID>` |
|
|
173
|
-
| `POST /api/auth/agent-bootstrap` |
|
|
198
|
+
| `POST /api/auth/agent-bootstrap` | `autotouch auth bootstrap --data-file bootstrap.json --save-key` |
|
|
199
|
+
| `POST /api/auth/login` | `autotouch auth login --email ada@yourcompany.com` |
|
|
200
|
+
| `POST /api/onboarding/submit-domain` | `autotouch onboarding submit-domain --website yourcompany.com` |
|
|
201
|
+
| `GET /api/org/context` | `autotouch org-context get` |
|
|
202
|
+
| `POST /api/org/context` | `autotouch org-context set --data-file org-context.json` |
|
|
203
|
+
| `GET /api/onboarding/personal-context` | `autotouch personal-context get` |
|
|
204
|
+
| `POST /api/onboarding/personal-context` | `autotouch personal-context set --data-file personal-context.json` |
|
|
205
|
+
| `GET /api/llm/company-context` | `autotouch context resolved` |
|
|
206
|
+
| `POST /api/task-queue/query` | `autotouch tasks query --data-file task-query.json` |
|
|
207
|
+
| `POST /api/task-queue/query/count` | `autotouch tasks count --data-file task-query.json` |
|
|
208
|
+
| `POST /api/task-queue/assignee-counts` | `autotouch tasks assignee-counts --data-file task-query.json` |
|
|
209
|
+
| `GET /api/task-queue/{task_id}` | `autotouch tasks get --task-id <TASK_ID>` |
|
|
210
|
+
| `GET /api/task-queue/stats/summary` | `autotouch tasks stats` |
|
|
211
|
+
| `POST /api/task-queue/create` | `autotouch tasks create --data-file task-create.json --actor-user-id <USER_ID>` |
|
|
212
|
+
| `PUT /api/task-queue/{task_id}` | `autotouch tasks update --task-id <TASK_ID> --data-file task-update.json --actor-user-id <USER_ID>` |
|
|
213
|
+
| `DELETE /api/task-queue/{task_id}` | `autotouch tasks delete --task-id <TASK_ID> --actor-user-id <USER_ID>` |
|
|
214
|
+
| `POST /api/task-queue/bulk-update` | `autotouch tasks bulk-update --data-file task-bulk-update.json --actor-user-id <USER_ID>` |
|
|
215
|
+
| `POST /api/task-queue/bulk-delete` | `autotouch tasks bulk-delete --data-file task-bulk-delete.json --actor-user-id <USER_ID>` |
|
|
216
|
+
| `POST /api/task-queue/{task_id}/draft` | `autotouch tasks draft --task-id <TASK_ID> --force --actor-user-id <USER_ID>` |
|
|
217
|
+
| `POST /api/task-queue/{task_id}/email/schedule` | `autotouch tasks schedule-email --task-id <TASK_ID> --data-file schedule.json --actor-user-id <USER_ID>` |
|
|
174
218
|
|
|
175
219
|
## Delete column
|
|
176
220
|
|
|
@@ -188,7 +232,6 @@ autotouch columns delete --table-id <TABLE_ID> --column-id <COLUMN_ID> --yes
|
|
|
188
232
|
## Sequence commands
|
|
189
233
|
|
|
190
234
|
The CLI now exposes the public Sequences endpoints under `autotouch sequences`.
|
|
191
|
-
Tasks still use raw HTTP plus `docs/platform/external-workflows-api.md`.
|
|
192
235
|
|
|
193
236
|
Common commands:
|
|
194
237
|
- `autotouch sequences recipe --type create --out-file sequence.json`
|
|
@@ -215,7 +258,6 @@ Important contract notes:
|
|
|
215
258
|
- `autotouch sequences enroll --wait` polls `/api/bulk-jobs/{job_id}` and preserves the API response `task_id` as the bulk job id.
|
|
216
259
|
- Research-table `add_to_sequence` is still available through `autotouch columns create/update/run` and still targets an existing sequence.
|
|
217
260
|
- Real enrollment requires the target sequence to be `ACTIVE` unless direct enroll uses `reviewOnly=true`.
|
|
218
|
-
- Tasks remain HTTP-only.
|
|
219
261
|
|
|
220
262
|
AI draft outputs:
|
|
221
263
|
- Manual new email: subject + body
|
|
@@ -379,6 +421,60 @@ autotouch leads filters-metadata
|
|
|
379
421
|
autotouch leads research-tables
|
|
380
422
|
```
|
|
381
423
|
|
|
424
|
+
## Task commands
|
|
425
|
+
|
|
426
|
+
The CLI now exposes the public task queue endpoints under `autotouch tasks`.
|
|
427
|
+
|
|
428
|
+
Use this pattern:
|
|
429
|
+
|
|
430
|
+
1. `autotouch tasks query` to page through tasks with the same `TaskQueryRequest` payload used by the API.
|
|
431
|
+
2. `autotouch tasks get` when you need one fully hydrated task by id.
|
|
432
|
+
3. `autotouch tasks create` for direct task creation from a JSON payload.
|
|
433
|
+
4. `autotouch tasks update` / `autotouch tasks bulk-update` for task status, owner, due date, and content changes.
|
|
434
|
+
5. `autotouch tasks draft` when you need just-in-time AI generation for a manual-capable task.
|
|
435
|
+
6. `autotouch tasks schedule-email` to schedule or immediately send a personal/manual email task.
|
|
436
|
+
7. `autotouch tasks delete` / `autotouch tasks bulk-delete` to soft-delete tasks by marking them skipped.
|
|
437
|
+
|
|
438
|
+
Important contract notes:
|
|
439
|
+
- Mutating task commands accept `--actor-user-id` for developer-key actor resolution.
|
|
440
|
+
- Query/count/assignee-counts use the backend `TaskQueryRequest` JSON shape directly.
|
|
441
|
+
- `draft` supports `--force` if you want to re-generate content even when a task already has content.
|
|
442
|
+
- `schedule-email` expects the same payload as `POST /api/task-queue/{task_id}/email/schedule`.
|
|
443
|
+
- AI draft outputs follow the same step behavior as sequences:
|
|
444
|
+
- manual new email: subject + body
|
|
445
|
+
- manual reply email: reply body
|
|
446
|
+
- LinkedIn connect: connection note
|
|
447
|
+
- LinkedIn message: message copy
|
|
448
|
+
- call: call script
|
|
449
|
+
|
|
450
|
+
Examples:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
autotouch tasks query --data-file task-query.json
|
|
454
|
+
autotouch tasks count --data-file task-query.json
|
|
455
|
+
autotouch tasks assignee-counts --data-file task-query.json
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
autotouch tasks get --task-id <TASK_ID>
|
|
460
|
+
autotouch tasks stats
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
autotouch tasks create --data-file task-create.json --actor-user-id <USER_ID>
|
|
465
|
+
autotouch tasks update --task-id <TASK_ID> --data-file task-update.json --actor-user-id <USER_ID>
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
autotouch tasks draft --task-id <TASK_ID> --force --actor-user-id <USER_ID>
|
|
470
|
+
autotouch tasks schedule-email --task-id <TASK_ID> --data-file schedule.json --actor-user-id <USER_ID>
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
autotouch tasks bulk-update --data-file task-bulk-update.json --actor-user-id <USER_ID>
|
|
475
|
+
autotouch tasks bulk-delete --data-file task-bulk-delete.json --actor-user-id <USER_ID>
|
|
476
|
+
```
|
|
477
|
+
|
|
382
478
|
## Bulk job status contract (authoritative run state)
|
|
383
479
|
|
|
384
480
|
Use bulk jobs as the source of truth for run lifecycle:
|
|
@@ -496,6 +592,8 @@ Recommendation:
|
|
|
496
592
|
|
|
497
593
|
### 4) `llm_enrichment`
|
|
498
594
|
|
|
595
|
+
Recommended for `agent` mode: use `instructions` and let the API compile the runnable prompt. In `basic` mode, write the prompt directly and keep it tailored to the user goal/preferences.
|
|
596
|
+
|
|
499
597
|
`llm-enrichment.json`:
|
|
500
598
|
|
|
501
599
|
```json
|
|
@@ -507,17 +605,48 @@ Recommendation:
|
|
|
507
605
|
"origin": "ai",
|
|
508
606
|
"autoRun": "never",
|
|
509
607
|
"config": {
|
|
510
|
-
"
|
|
608
|
+
"instructions": "Research the company in this row and return JSON with icp_fit, summary, and risks.",
|
|
511
609
|
"mode": "agent",
|
|
512
610
|
"temperature": 0.7,
|
|
513
611
|
"batchSize": 50,
|
|
514
|
-
"promptSource": "
|
|
612
|
+
"promptSource": "generated",
|
|
613
|
+
"useCompanyContext": true,
|
|
515
614
|
"structuredOutput": true,
|
|
516
615
|
"useAutoSchema": true
|
|
517
616
|
}
|
|
518
617
|
}
|
|
519
618
|
```
|
|
520
619
|
|
|
620
|
+
Notes:
|
|
621
|
+
- In `agent` mode, `instructions` is the recommended authoring surface.
|
|
622
|
+
- The API compiles those instructions into the stored runnable prompt on create/update.
|
|
623
|
+
- Company/requester context is always enabled for generated `agent`-mode prompts.
|
|
624
|
+
- In `basic` mode, the recommended path is a hand-authored prompt. Use explicit placeholders like `{{company_name}}`, `{{domain}}`, or requester context placeholders from `autotouch context resolved` when the prompt should reference row/requester data.
|
|
625
|
+
|
|
626
|
+
Prompt variables:
|
|
627
|
+
- Row variables come from the current table row, for example `{{company_name}}`, `{{domain}}`, `{{first_name}}`, `{{linkedin_url}}`.
|
|
628
|
+
- Requester/company-context variables come from onboarding + org/personal context, for example `{{user_company_name}}`, `{{user_value_proposition}}`, `{{buyer_persona}}`, `{{user_persona}}`.
|
|
629
|
+
- The runtime only injects variables that the prompt explicitly references. If the prompt needs row/context data, include those `{{...}}` placeholders directly.
|
|
630
|
+
- Use `autotouch context resolved` to inspect the requester/company-context variables available for the current user/session.
|
|
631
|
+
|
|
632
|
+
Basic-mode example:
|
|
633
|
+
|
|
634
|
+
```json
|
|
635
|
+
{
|
|
636
|
+
"key": "fit_summary",
|
|
637
|
+
"label": "Fit Summary",
|
|
638
|
+
"kind": "enrichment",
|
|
639
|
+
"dataType": "text",
|
|
640
|
+
"origin": "ai",
|
|
641
|
+
"autoRun": "never",
|
|
642
|
+
"config": {
|
|
643
|
+
"mode": "basic",
|
|
644
|
+
"prompt": "Write a short fit summary for {{company_name}} (website {{domain}}) and explain why it matches {{user_value_proposition}}.",
|
|
645
|
+
"useCompanyContext": true
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
```
|
|
649
|
+
|
|
521
650
|
If you provide a custom schema, use strict Schema V2 field-map shape:
|
|
522
651
|
|
|
523
652
|
```json
|
|
@@ -738,7 +867,7 @@ Sequence creation note:
|
|
|
738
867
|
- The CLI can create/update/activate sequence definitions directly with `autotouch sequences ...`.
|
|
739
868
|
- Research-table `add_to_sequence` columns and direct `autotouch sequences enroll` both target an existing sequence.
|
|
740
869
|
- Real enrollment still requires that sequence to be `ACTIVE` unless direct enroll uses `reviewOnly=true`.
|
|
741
|
-
-
|
|
870
|
+
- Downstream task queue work is available through `autotouch tasks ...`.
|
|
742
871
|
|
|
743
872
|
## Safe run patterns (`firstN` + `--unprocessed-only`)
|
|
744
873
|
|