autotouch-cli 0.2.100__tar.gz → 0.2.102__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.100 → autotouch_cli-0.2.102}/PKG-INFO +10 -4
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/README.md +9 -3
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/agents.py +17 -2
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/data/CLI_REFERENCE.md +15 -11
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/data/cli-manifest.json +38 -9
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/parser.py +1 -1
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/templates.py +107 -1
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/workflows/registry.py +27 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/PKG-INFO +10 -4
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/provider_registry.py +2 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/pyproject.toml +1 -1
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/MANIFEST.in +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/cli.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/cli_contracts.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/__init__.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/auth.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/cells.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/columns.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/integrations.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/jobs.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/leads.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/linkedin.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/list_build.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/prompts.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/rows.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/search.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/sequences.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/tables.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/tasks.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/webhooks.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/commands/workspace_secrets.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/__init__.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/auth.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/config.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/csv_import.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/http.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/io.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/output.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/polling.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/run.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/core/validation.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/exceptions.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/mongo_status.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/parser_groups.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/sequence_support.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli/workflows/__init__.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/SOURCES.txt +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/__init__.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/linkedin_contract.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/linkedin_filters.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/list_build_contract.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/autotouch_shared/search_contract.py +0 -0
- {autotouch_cli-0.2.100 → autotouch_cli-0.2.102}/setup.cfg +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.102
|
|
4
4
|
Summary: Autotouch Smart Table CLI
|
|
5
5
|
Project-URL: Homepage, https://app.autotouch.ai
|
|
6
6
|
Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
|
|
@@ -91,6 +91,11 @@ autotouch auth bootstrap \
|
|
|
91
91
|
autotouch auth check
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
+
Demo accounts:
|
|
95
|
+
|
|
96
|
+
- For a brand-new demo org plus developer key, use `autotouch auth bootstrap` as shown above.
|
|
97
|
+
- For a demo login inside an existing seeded demo org, create the org with `apps/api/scripts/create_demo_org.py`, then add the user through the invite/register flow in `docs/operations/demo-accounts.md`.
|
|
98
|
+
|
|
94
99
|
Config precedence:
|
|
95
100
|
- Explicit flags win over environment variables.
|
|
96
101
|
- Environment variables win over saved config.
|
|
@@ -183,7 +188,7 @@ For structured company builds, start with industry IDs plus geo/company-size fil
|
|
|
183
188
|
|
|
184
189
|
For account-first prospecting from LinkedIn/Sales Navigator, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use Exa company search as a default pre-step for every LinkedIn list build; use it when the user's target is genuinely semantic, niche, competitor-based, or not meant to be LinkedIn-sourced.
|
|
185
190
|
|
|
186
|
-
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. See the agent playbook for the full source-table
|
|
191
|
+
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. LinkedIn engagement lead agents screen all harvested engagers by headline/title before company resolution and final lead scoring; company agents can keep matches in review or auto-promote qualified matches into the Companies workspace. See the agent playbook for the full source-table, candidate-sync, and company-promotion contract.
|
|
187
192
|
|
|
188
193
|
## Workflow Plans
|
|
189
194
|
|
|
@@ -198,7 +203,7 @@ discover -> plan -> scaffold -> run primitives -> inspect
|
|
|
198
203
|
- `autotouch workflows scaffold --type <TYPE> --out-dir <DIR>` writes payload files and a command runbook.
|
|
199
204
|
- `autotouch columns recipe` and `autotouch sequences recipe` remain leaf-level templates.
|
|
200
205
|
|
|
201
|
-
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
206
|
+
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `agent-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, scheduled agents, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
202
207
|
|
|
203
208
|
## Sources And Destinations
|
|
204
209
|
|
|
@@ -268,10 +273,11 @@ For automation or agent-driven setup, use:
|
|
|
268
273
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
269
274
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
270
275
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
271
|
-
- `autotouch --version` should be `0.2.
|
|
276
|
+
- `autotouch --version` should be `0.2.102` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, the cleaned single LinkedIn-sourced list-build path, Exa Company Search up to 100 results, scheduled agent `--target ACCOUNTS|LEADS`, `agents signals --target`, the `agent-to-sequence` workflow scaffold, paced HTTP Request column contracts, branch-aware LinkedIn sequence recipes, real agent soft-delete with associated-table handling, research-table sequence handoff assignee and active-sequence-conflict guard config, backend-owned directional source/destination helpers, goal-level workflow plans, and website visitor/external intent webhook workflow guidance
|
|
272
277
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
273
278
|
- `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
|
|
274
279
|
- `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
|
|
280
|
+
- `autotouch workflows plan --type agent-to-sequence` and `autotouch workflows scaffold --type agent-to-sequence --out-dir workflow` for scheduled agent discovery into Autotouch Sequence tasks
|
|
275
281
|
- `autotouch workflows plan --type website-visitors` and `autotouch workflows scaffold --type website-visitors --out-dir workflow` for website visitor or external intent provider webhook workflows
|
|
276
282
|
- `autotouch integrations recipe --type from_crm --provider hubspot` for CRM-to-research-table imports
|
|
277
283
|
- `autotouch columns recipe --type to_crm|to_outreach|to_leads|to_sequence` for research-table destination workflows
|
|
@@ -66,6 +66,11 @@ autotouch auth bootstrap \
|
|
|
66
66
|
autotouch auth check
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
Demo accounts:
|
|
70
|
+
|
|
71
|
+
- For a brand-new demo org plus developer key, use `autotouch auth bootstrap` as shown above.
|
|
72
|
+
- For a demo login inside an existing seeded demo org, create the org with `apps/api/scripts/create_demo_org.py`, then add the user through the invite/register flow in `docs/operations/demo-accounts.md`.
|
|
73
|
+
|
|
69
74
|
Config precedence:
|
|
70
75
|
- Explicit flags win over environment variables.
|
|
71
76
|
- Environment variables win over saved config.
|
|
@@ -158,7 +163,7 @@ For structured company builds, start with industry IDs plus geo/company-size fil
|
|
|
158
163
|
|
|
159
164
|
For account-first prospecting from LinkedIn/Sales Navigator, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use Exa company search as a default pre-step for every LinkedIn list build; use it when the user's target is genuinely semantic, niche, competitor-based, or not meant to be LinkedIn-sourced.
|
|
160
165
|
|
|
161
|
-
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. See the agent playbook for the full source-table
|
|
166
|
+
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. LinkedIn engagement lead agents screen all harvested engagers by headline/title before company resolution and final lead scoring; company agents can keep matches in review or auto-promote qualified matches into the Companies workspace. See the agent playbook for the full source-table, candidate-sync, and company-promotion contract.
|
|
162
167
|
|
|
163
168
|
## Workflow Plans
|
|
164
169
|
|
|
@@ -173,7 +178,7 @@ discover -> plan -> scaffold -> run primitives -> inspect
|
|
|
173
178
|
- `autotouch workflows scaffold --type <TYPE> --out-dir <DIR>` writes payload files and a command runbook.
|
|
174
179
|
- `autotouch columns recipe` and `autotouch sequences recipe` remain leaf-level templates.
|
|
175
180
|
|
|
176
|
-
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
181
|
+
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `agent-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, scheduled agents, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
177
182
|
|
|
178
183
|
## Sources And Destinations
|
|
179
184
|
|
|
@@ -243,10 +248,11 @@ For automation or agent-driven setup, use:
|
|
|
243
248
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
244
249
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
245
250
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
246
|
-
- `autotouch --version` should be `0.2.
|
|
251
|
+
- `autotouch --version` should be `0.2.102` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, the cleaned single LinkedIn-sourced list-build path, Exa Company Search up to 100 results, scheduled agent `--target ACCOUNTS|LEADS`, `agents signals --target`, the `agent-to-sequence` workflow scaffold, paced HTTP Request column contracts, branch-aware LinkedIn sequence recipes, real agent soft-delete with associated-table handling, research-table sequence handoff assignee and active-sequence-conflict guard config, backend-owned directional source/destination helpers, goal-level workflow plans, and website visitor/external intent webhook workflow guidance
|
|
247
252
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
248
253
|
- `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
|
|
249
254
|
- `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
|
|
255
|
+
- `autotouch workflows plan --type agent-to-sequence` and `autotouch workflows scaffold --type agent-to-sequence --out-dir workflow` for scheduled agent discovery into Autotouch Sequence tasks
|
|
250
256
|
- `autotouch workflows plan --type website-visitors` and `autotouch workflows scaffold --type website-visitors --out-dir workflow` for website visitor or external intent provider webhook workflows
|
|
251
257
|
- `autotouch integrations recipe --type from_crm --provider hubspot` for CRM-to-research-table imports
|
|
252
258
|
- `autotouch columns recipe --type to_crm|to_outreach|to_leads|to_sequence` for research-table destination workflows
|
|
@@ -297,6 +297,8 @@ def cmd_agents_update(args: argparse.Namespace, *, runtime: AgentCommandRuntime)
|
|
|
297
297
|
payload: Dict[str, Any] = {}
|
|
298
298
|
if getattr(args, "name", None):
|
|
299
299
|
payload["name"] = args.name
|
|
300
|
+
if getattr(args, "assigned_user", None):
|
|
301
|
+
payload["assignedUserId"] = args.assigned_user
|
|
300
302
|
if getattr(args, "status", None):
|
|
301
303
|
payload["status"] = args.status
|
|
302
304
|
if getattr(args, "auto_find_email", None) is not None:
|
|
@@ -548,10 +550,15 @@ def cmd_agents_generate_job_signal(args: argparse.Namespace, *, runtime: AgentCo
|
|
|
548
550
|
|
|
549
551
|
def cmd_agents_signals(args: argparse.Namespace, *, runtime: AgentCommandRuntime) -> None:
|
|
550
552
|
token = runtime.resolve_token(args.token, required=True)
|
|
553
|
+
params = None
|
|
554
|
+
target = str(getattr(args, "target", "") or "").strip()
|
|
555
|
+
if target:
|
|
556
|
+
params = {"targetType": target}
|
|
551
557
|
data = runtime.request_api(
|
|
552
558
|
"GET", "/api/agents/skill-packs",
|
|
553
559
|
base_url=args.base_url, token=token,
|
|
554
560
|
use_x_api_key=args.use_x_api_key,
|
|
561
|
+
params=params,
|
|
555
562
|
timeout=args.timeout, verbose=args.verbose,
|
|
556
563
|
)
|
|
557
564
|
runtime.print_json(data, args.compact)
|
|
@@ -631,7 +638,10 @@ def register_agents_subcommands(
|
|
|
631
638
|
pac.add_argument(
|
|
632
639
|
"--auto-sequence-id",
|
|
633
640
|
dest="auto_sequence_id",
|
|
634
|
-
help=
|
|
641
|
+
help=(
|
|
642
|
+
"Sequence ID — enroll discovered leads after lead sync; sequence step settings control "
|
|
643
|
+
"manual vs automated execution."
|
|
644
|
+
),
|
|
635
645
|
)
|
|
636
646
|
pac.add_argument("--status", choices=["DRAFT", "ACTIVE", "PAUSED"], help="Initial status")
|
|
637
647
|
pac.add_argument("--from-file", dest="from_file", help="Path to JSON payload file")
|
|
@@ -643,6 +653,7 @@ def register_agents_subcommands(
|
|
|
643
653
|
pau = agents_sub.add_parser("update", help="Update an existing agent")
|
|
644
654
|
pau.add_argument("agent_id", help="Agent ID")
|
|
645
655
|
pau.add_argument("--name", help="New agent name")
|
|
656
|
+
pau.add_argument("--assigned-user", dest="assigned_user", help="Assigned user ID")
|
|
646
657
|
pau.add_argument("--status", choices=["DRAFT", "ACTIVE", "PAUSED"], help="New status")
|
|
647
658
|
pau.add_argument("--auto-find-email", dest="auto_find_email", type=_bool_arg, default=None, help="Enable/disable auto email finder")
|
|
648
659
|
pau.add_argument("--auto-find-phone", dest="auto_find_phone", type=_bool_arg, default=None, help="Enable/disable auto phone finder")
|
|
@@ -656,7 +667,10 @@ def register_agents_subcommands(
|
|
|
656
667
|
pau.add_argument(
|
|
657
668
|
"--auto-sequence-id",
|
|
658
669
|
dest="auto_sequence_id",
|
|
659
|
-
help=
|
|
670
|
+
help=(
|
|
671
|
+
"Sequence ID for enrollment after lead sync; sequence step settings control manual vs "
|
|
672
|
+
"automated execution. Pass empty string to clear."
|
|
673
|
+
),
|
|
660
674
|
)
|
|
661
675
|
pau.add_argument("--schedule-time", dest="schedule_time", help="Time of day (HH:MM) — used by daily/weekly")
|
|
662
676
|
pau.add_argument("--schedule-tz", dest="schedule_tz", help="Timezone")
|
|
@@ -765,6 +779,7 @@ def register_agents_subcommands(
|
|
|
765
779
|
|
|
766
780
|
# -- signals --
|
|
767
781
|
pass_ = agents_sub.add_parser("signals", help="List available signal skill packs")
|
|
782
|
+
pass_.add_argument("--target", choices=AGENT_TARGET_CHOICES, help="Filter signals to a target type")
|
|
768
783
|
add_api_common_arguments(pass_)
|
|
769
784
|
pass_.set_defaults(func=handlers["signals"])
|
|
770
785
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Autotouch CLI Reference
|
|
2
2
|
|
|
3
|
-
Generated from the installed parser for `autotouch-cli` `0.2.
|
|
3
|
+
Generated from the installed parser for `autotouch-cli` `0.2.102`.
|
|
4
4
|
Manifest schema version: `2`.
|
|
5
5
|
|
|
6
6
|
## Output Modes
|
|
@@ -69,7 +69,7 @@ Create a new agent
|
|
|
69
69
|
- `--auto-find-phone` (kind=boolean; when omitted=False; when present=True): Enable auto phone finder
|
|
70
70
|
- `--auto-broaden` (kind=boolean; when omitted=False; when present=True): Enable auto broaden search
|
|
71
71
|
- `--auto-create-lead-mode` (kind=string; choices=qualified_only,everyone,manual_only): Which discovered prospects become leads (default: qualified_only)
|
|
72
|
-
- `--auto-sequence-id` (kind=string): Sequence ID — discovered leads
|
|
72
|
+
- `--auto-sequence-id` (kind=string): Sequence ID — enroll discovered leads after lead sync; sequence step settings control manual vs automated execution.
|
|
73
73
|
- `--status` (kind=string; choices=DRAFT,ACTIVE,PAUSED): Initial status
|
|
74
74
|
- `--from-file` (kind=file; input=file): Path to JSON payload file
|
|
75
75
|
- `--generate` (kind=boolean; when omitted=False; when present=True): Auto-generate persona, topics, and job signal config
|
|
@@ -353,12 +353,14 @@ List available signal skill packs
|
|
|
353
353
|
- Destructive: `no`
|
|
354
354
|
- Output modes: `json, ndjson, human`
|
|
355
355
|
- Example:
|
|
356
|
-
- `autotouch agents signals [-h] [--
|
|
356
|
+
- `autotouch agents signals [-h] [--target {LEADS,ACCOUNTS}]
|
|
357
|
+
[--base-url BASE_URL] [--token TOKEN]
|
|
357
358
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
358
359
|
[--output {json,ndjson,human}] [--compact]
|
|
359
360
|
[--select SELECT |
|
|
360
361
|
--json-pointer JSON_POINTER] [--verbose]`
|
|
361
362
|
- Options:
|
|
363
|
+
- `--target` (kind=string; choices=LEADS,ACCOUNTS): Filter signals to a target type
|
|
362
364
|
- `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
|
|
363
365
|
- `--token` (kind=string; sensitive): Developer API key / JWT token
|
|
364
366
|
- `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
|
|
@@ -379,6 +381,7 @@ Update an existing agent
|
|
|
379
381
|
- Output modes: `json, ndjson, human`
|
|
380
382
|
- Example:
|
|
381
383
|
- `autotouch agents update [-h] [--name NAME]
|
|
384
|
+
[--assigned-user ASSIGNED_USER]
|
|
382
385
|
[--status {DRAFT,ACTIVE,PAUSED}]
|
|
383
386
|
[--auto-find-email AUTO_FIND_EMAIL]
|
|
384
387
|
[--auto-find-phone AUTO_FIND_PHONE]
|
|
@@ -401,12 +404,13 @@ Update an existing agent
|
|
|
401
404
|
agent_id`
|
|
402
405
|
- Options:
|
|
403
406
|
- `--name` (kind=string): New agent name
|
|
407
|
+
- `--assigned-user` (kind=string): Assigned user ID
|
|
404
408
|
- `--status` (kind=string; choices=DRAFT,ACTIVE,PAUSED): New status
|
|
405
409
|
- `--auto-find-email` (kind=string): Enable/disable auto email finder
|
|
406
410
|
- `--auto-find-phone` (kind=string): Enable/disable auto phone finder
|
|
407
411
|
- `--auto-broaden` (kind=string): Enable/disable auto broaden search
|
|
408
412
|
- `--auto-create-lead-mode` (kind=string; choices=qualified_only,everyone,manual_only): Which discovered prospects become leads
|
|
409
|
-
- `--auto-sequence-id` (kind=string): Sequence ID for
|
|
413
|
+
- `--auto-sequence-id` (kind=string): Sequence ID for enrollment after lead sync; sequence step settings control manual vs automated execution. Pass empty string to clear.
|
|
410
414
|
- `--schedule-time` (kind=string): Time of day (HH:MM) — used by daily/weekly
|
|
411
415
|
- `--schedule-tz` (kind=string): Timezone
|
|
412
416
|
- `--schedule-frequency` (kind=string; choices=hourly,every_6h,every_12h,daily,weekly): Run cadence
|
|
@@ -6062,7 +6066,7 @@ Use workflows for full user goals. Recipes are leaf templates; workflow plans de
|
|
|
6062
6066
|
- Example:
|
|
6063
6067
|
- `autotouch workflows list`
|
|
6064
6068
|
- `autotouch workflows plan --type bulk-outreach`
|
|
6065
|
-
- `autotouch workflows scaffold --type
|
|
6069
|
+
- `autotouch workflows scaffold --type agent-to-sequence --out-dir workflow`
|
|
6066
6070
|
|
|
6067
6071
|
#### `autotouch workflows list`
|
|
6068
6072
|
|
|
@@ -6097,13 +6101,13 @@ Plan the workflow before creating files or running side effects. Use this to cho
|
|
|
6097
6101
|
- Output modes: `json, ndjson, human`
|
|
6098
6102
|
- Example:
|
|
6099
6103
|
- `autotouch workflows plan [-h]
|
|
6100
|
-
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6104
|
+
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6101
6105
|
[--out-file OUT_FILE]
|
|
6102
6106
|
[--output {json,ndjson,human}] [--compact]
|
|
6103
6107
|
[--select SELECT |
|
|
6104
6108
|
--json-pointer JSON_POINTER]`
|
|
6105
6109
|
- Options:
|
|
6106
|
-
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6110
|
+
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6107
6111
|
- `--out-file` (kind=file; input=file): Save raw workflow payload to file
|
|
6108
6112
|
- `--output` (kind=string; choices=json,ndjson,human; default=json): Output mode
|
|
6109
6113
|
- `--compact` (kind=boolean; when omitted=False; when present=True): Print compact JSON
|
|
@@ -6121,13 +6125,13 @@ Alias for `workflows plan`
|
|
|
6121
6125
|
- Output modes: `json, ndjson, human`
|
|
6122
6126
|
- Example:
|
|
6123
6127
|
- `autotouch workflows recipe [-h]
|
|
6124
|
-
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6128
|
+
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6125
6129
|
[--out-file OUT_FILE]
|
|
6126
6130
|
[--output {json,ndjson,human}] [--compact]
|
|
6127
6131
|
[--select SELECT |
|
|
6128
6132
|
--json-pointer JSON_POINTER]`
|
|
6129
6133
|
- Options:
|
|
6130
|
-
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6134
|
+
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6131
6135
|
- `--out-file` (kind=file; input=file): Save raw workflow payload to file
|
|
6132
6136
|
- `--output` (kind=string; choices=json,ndjson,human; default=json): Output mode
|
|
6133
6137
|
- `--compact` (kind=boolean; when omitted=False; when present=True): Print compact JSON
|
|
@@ -6145,13 +6149,13 @@ Emit ordered workflow files and commands for a blueprint
|
|
|
6145
6149
|
- Output modes: `json, ndjson, human`
|
|
6146
6150
|
- Example:
|
|
6147
6151
|
- `autotouch workflows scaffold [-h]
|
|
6148
|
-
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6152
|
+
--type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}
|
|
6149
6153
|
[--out-dir OUT_DIR]
|
|
6150
6154
|
[--output {json,ndjson,human}] [--compact]
|
|
6151
6155
|
[--select SELECT |
|
|
6152
6156
|
--json-pointer JSON_POINTER]`
|
|
6153
6157
|
- Options:
|
|
6154
|
-
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6158
|
+
- `--type` (required; kind=string; choices=bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table): Workflow blueprint type
|
|
6155
6159
|
- `--out-dir` (kind=string): Directory to save scaffold payload files
|
|
6156
6160
|
- `--output` (kind=string; choices=json,ndjson,human; default=json): Output mode
|
|
6157
6161
|
- `--compact` (kind=boolean; when omitted=False; when present=True): Print compact JSON
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.102",
|
|
3
3
|
"manifest_schema_version": 2,
|
|
4
4
|
"entry_points": {
|
|
5
5
|
"autotouch": "autotouch_cli.cli:main",
|
|
@@ -8983,7 +8983,7 @@
|
|
|
8983
8983
|
"examples": [
|
|
8984
8984
|
"autotouch workflows list",
|
|
8985
8985
|
"autotouch workflows plan --type bulk-outreach",
|
|
8986
|
-
"autotouch workflows scaffold --type
|
|
8986
|
+
"autotouch workflows scaffold --type agent-to-sequence --out-dir workflow"
|
|
8987
8987
|
],
|
|
8988
8988
|
"stability": "stable",
|
|
8989
8989
|
"handler": null
|
|
@@ -9133,6 +9133,7 @@
|
|
|
9133
9133
|
"company-table-to-people",
|
|
9134
9134
|
"table-to-outreach",
|
|
9135
9135
|
"research-to-sequence",
|
|
9136
|
+
"agent-to-sequence",
|
|
9136
9137
|
"account-research",
|
|
9137
9138
|
"signal-outreach",
|
|
9138
9139
|
"website-visitors",
|
|
@@ -9242,7 +9243,7 @@
|
|
|
9242
9243
|
},
|
|
9243
9244
|
"availability": null,
|
|
9244
9245
|
"examples": [
|
|
9245
|
-
"autotouch workflows plan [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9246
|
+
"autotouch workflows plan [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9246
9247
|
],
|
|
9247
9248
|
"stability": "stable",
|
|
9248
9249
|
"handler": "_fn"
|
|
@@ -9274,6 +9275,7 @@
|
|
|
9274
9275
|
"company-table-to-people",
|
|
9275
9276
|
"table-to-outreach",
|
|
9276
9277
|
"research-to-sequence",
|
|
9278
|
+
"agent-to-sequence",
|
|
9277
9279
|
"account-research",
|
|
9278
9280
|
"signal-outreach",
|
|
9279
9281
|
"website-visitors",
|
|
@@ -9383,7 +9385,7 @@
|
|
|
9383
9385
|
},
|
|
9384
9386
|
"availability": null,
|
|
9385
9387
|
"examples": [
|
|
9386
|
-
"autotouch workflows recipe [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9388
|
+
"autotouch workflows recipe [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9387
9389
|
],
|
|
9388
9390
|
"stability": "stable",
|
|
9389
9391
|
"handler": "_fn"
|
|
@@ -9415,6 +9417,7 @@
|
|
|
9415
9417
|
"company-table-to-people",
|
|
9416
9418
|
"table-to-outreach",
|
|
9417
9419
|
"research-to-sequence",
|
|
9420
|
+
"agent-to-sequence",
|
|
9418
9421
|
"account-research",
|
|
9419
9422
|
"signal-outreach",
|
|
9420
9423
|
"website-visitors",
|
|
@@ -9523,7 +9526,7 @@
|
|
|
9523
9526
|
},
|
|
9524
9527
|
"availability": null,
|
|
9525
9528
|
"examples": [
|
|
9526
|
-
"autotouch workflows scaffold [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-dir OUT_DIR]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9529
|
+
"autotouch workflows scaffold [-h]\n --type {bulk-outreach,company-table-to-people,table-to-outreach,research-to-sequence,agent-to-sequence,account-research,signal-outreach,website-visitors,list-build-to-table}\n [--out-dir OUT_DIR]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
9527
9530
|
],
|
|
9528
9531
|
"stability": "stable",
|
|
9529
9532
|
"handler": "_fn"
|
|
@@ -36058,7 +36061,7 @@
|
|
|
36058
36061
|
{
|
|
36059
36062
|
"dest": "auto_sequence_id",
|
|
36060
36063
|
"required": false,
|
|
36061
|
-
"help": "Sequence ID \u2014 discovered leads
|
|
36064
|
+
"help": "Sequence ID \u2014 enroll discovered leads after lead sync; sequence step settings control manual vs automated execution.",
|
|
36062
36065
|
"kind": "string",
|
|
36063
36066
|
"action": "store",
|
|
36064
36067
|
"flags": [
|
|
@@ -36301,6 +36304,17 @@
|
|
|
36301
36304
|
],
|
|
36302
36305
|
"takes_value": true
|
|
36303
36306
|
},
|
|
36307
|
+
{
|
|
36308
|
+
"dest": "assigned_user",
|
|
36309
|
+
"required": false,
|
|
36310
|
+
"help": "Assigned user ID",
|
|
36311
|
+
"kind": "string",
|
|
36312
|
+
"action": "store",
|
|
36313
|
+
"flags": [
|
|
36314
|
+
"--assigned-user"
|
|
36315
|
+
],
|
|
36316
|
+
"takes_value": true
|
|
36317
|
+
},
|
|
36304
36318
|
{
|
|
36305
36319
|
"dest": "status",
|
|
36306
36320
|
"required": false,
|
|
@@ -36369,7 +36383,7 @@
|
|
|
36369
36383
|
{
|
|
36370
36384
|
"dest": "auto_sequence_id",
|
|
36371
36385
|
"required": false,
|
|
36372
|
-
"help": "Sequence ID for
|
|
36386
|
+
"help": "Sequence ID for enrollment after lead sync; sequence step settings control manual vs automated execution. Pass empty string to clear.",
|
|
36373
36387
|
"kind": "string",
|
|
36374
36388
|
"action": "store",
|
|
36375
36389
|
"flags": [
|
|
@@ -36654,7 +36668,7 @@
|
|
|
36654
36668
|
},
|
|
36655
36669
|
"availability": null,
|
|
36656
36670
|
"examples": [
|
|
36657
|
-
"autotouch agents update [-h] [--name NAME]\n [--status {DRAFT,ACTIVE,PAUSED}]\n [--auto-find-email AUTO_FIND_EMAIL]\n [--auto-find-phone AUTO_FIND_PHONE]\n [--auto-broaden AUTO_BROADEN]\n [--auto-create-lead-mode {qualified_only,everyone,manual_only}]\n [--auto-sequence-id AUTO_SEQUENCE_ID]\n [--schedule-time SCHEDULE_TIME]\n [--schedule-tz SCHEDULE_TZ]\n [--schedule-frequency {hourly,every_6h,every_12h,daily,weekly}]\n [--schedule-days {all,weekdays}]\n [--schedule-day-of-week 0-6]\n [--schedule-window-start SCHEDULE_WINDOW_START]\n [--schedule-window-end SCHEDULE_WINDOW_END]\n [--from-file FROM_FILE] [--dry-run]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT | --json-pointer JSON_POINTER]\n [--verbose]\n agent_id"
|
|
36671
|
+
"autotouch agents update [-h] [--name NAME]\n [--assigned-user ASSIGNED_USER]\n [--status {DRAFT,ACTIVE,PAUSED}]\n [--auto-find-email AUTO_FIND_EMAIL]\n [--auto-find-phone AUTO_FIND_PHONE]\n [--auto-broaden AUTO_BROADEN]\n [--auto-create-lead-mode {qualified_only,everyone,manual_only}]\n [--auto-sequence-id AUTO_SEQUENCE_ID]\n [--schedule-time SCHEDULE_TIME]\n [--schedule-tz SCHEDULE_TZ]\n [--schedule-frequency {hourly,every_6h,every_12h,daily,weekly}]\n [--schedule-days {all,weekdays}]\n [--schedule-day-of-week 0-6]\n [--schedule-window-start SCHEDULE_WINDOW_START]\n [--schedule-window-end SCHEDULE_WINDOW_END]\n [--from-file FROM_FILE] [--dry-run]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT | --json-pointer JSON_POINTER]\n [--verbose]\n agent_id"
|
|
36658
36672
|
],
|
|
36659
36673
|
"stability": "stable",
|
|
36660
36674
|
"handler": "_fn"
|
|
@@ -38300,6 +38314,21 @@
|
|
|
38300
38314
|
"required_flags": [],
|
|
38301
38315
|
"positionals": [],
|
|
38302
38316
|
"options": [
|
|
38317
|
+
{
|
|
38318
|
+
"dest": "target",
|
|
38319
|
+
"required": false,
|
|
38320
|
+
"help": "Filter signals to a target type",
|
|
38321
|
+
"kind": "string",
|
|
38322
|
+
"action": "store",
|
|
38323
|
+
"choices": [
|
|
38324
|
+
"LEADS",
|
|
38325
|
+
"ACCOUNTS"
|
|
38326
|
+
],
|
|
38327
|
+
"flags": [
|
|
38328
|
+
"--target"
|
|
38329
|
+
],
|
|
38330
|
+
"takes_value": true
|
|
38331
|
+
},
|
|
38303
38332
|
{
|
|
38304
38333
|
"dest": "base_url",
|
|
38305
38334
|
"required": false,
|
|
@@ -38453,7 +38482,7 @@
|
|
|
38453
38482
|
},
|
|
38454
38483
|
"availability": null,
|
|
38455
38484
|
"examples": [
|
|
38456
|
-
"autotouch agents signals [-h] [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
|
|
38485
|
+
"autotouch agents signals [-h] [--target {LEADS,ACCOUNTS}]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
|
|
38457
38486
|
],
|
|
38458
38487
|
"stability": "stable",
|
|
38459
38488
|
"handler": "_fn"
|
|
@@ -488,7 +488,7 @@ def build_parser(
|
|
|
488
488
|
pw._codex_examples = [
|
|
489
489
|
"autotouch workflows list",
|
|
490
490
|
"autotouch workflows plan --type bulk-outreach",
|
|
491
|
-
"autotouch workflows scaffold --type
|
|
491
|
+
"autotouch workflows scaffold --type agent-to-sequence --out-dir workflow",
|
|
492
492
|
]
|
|
493
493
|
workflows_sub = pw.add_subparsers(dest="workflows_cmd", required=True)
|
|
494
494
|
|
|
@@ -51,6 +51,7 @@ COLUMN_RECIPE_ALIASES: Dict[str, Dict[str, Any]] = {
|
|
|
51
51
|
"Directional alias: Autotouch Leads -> Autotouch Sequence.",
|
|
52
52
|
"Use this after leads exist and the user wants Autotouch sequence enrollment.",
|
|
53
53
|
"Set config.assignedToUserId so generated sequence tasks are assigned to the intended user.",
|
|
54
|
+
"Keep config.skipActiveSequenceConflicts=true unless the user explicitly wants parallel enrollment for people already active in another sequence.",
|
|
54
55
|
],
|
|
55
56
|
},
|
|
56
57
|
"to_crm": {
|
|
@@ -1649,6 +1650,7 @@ def _to_sequence_payload(*, source_lead_column: str = "sync_to_leads") -> Dict[s
|
|
|
1649
1650
|
"sequenceId": "<SEQUENCE_ID>",
|
|
1650
1651
|
"sourceLeadColumn": source_lead_column,
|
|
1651
1652
|
"assignedToUserId": "<USER_ID>",
|
|
1653
|
+
"skipActiveSequenceConflicts": True,
|
|
1652
1654
|
}
|
|
1653
1655
|
return payload
|
|
1654
1656
|
|
|
@@ -1737,6 +1739,7 @@ def _workflow_scaffold_research_to_sequence() -> Dict[str, Any]:
|
|
|
1737
1739
|
table_scope="source",
|
|
1738
1740
|
notes=[
|
|
1739
1741
|
"Set sequenceId and assignedToUserId before creating the column.",
|
|
1742
|
+
"Keep skipActiveSequenceConflicts=true unless the user explicitly wants parallel enrollment for people already active in another sequence.",
|
|
1740
1743
|
"AI-draft sequence steps should default to manual review until users trust the outputs.",
|
|
1741
1744
|
],
|
|
1742
1745
|
),
|
|
@@ -1759,6 +1762,108 @@ def _workflow_scaffold_research_to_sequence() -> Dict[str, Any]:
|
|
|
1759
1762
|
}
|
|
1760
1763
|
|
|
1761
1764
|
|
|
1765
|
+
def _agent_to_sequence_payload() -> Dict[str, Any]:
|
|
1766
|
+
return {
|
|
1767
|
+
"name": "<AGENT_NAME>",
|
|
1768
|
+
"targetType": "LEADS",
|
|
1769
|
+
"assignedUserId": "<USER_ID>",
|
|
1770
|
+
"personaConfig": {
|
|
1771
|
+
"brief": "<ICP_BRIEF>",
|
|
1772
|
+
"industries": ["Software Development"],
|
|
1773
|
+
"companySizes": ["11-50", "51-200"],
|
|
1774
|
+
"locations": ["United States"],
|
|
1775
|
+
"companyExclusions": [],
|
|
1776
|
+
"candidatesPerCompany": 2,
|
|
1777
|
+
"additionalContext": (
|
|
1778
|
+
"Find people who are likely to own or influence the outreach motion. "
|
|
1779
|
+
"Return none when the company or person fit is weak."
|
|
1780
|
+
),
|
|
1781
|
+
},
|
|
1782
|
+
"selectedSignals": [
|
|
1783
|
+
{
|
|
1784
|
+
"key": "hiring-signals",
|
|
1785
|
+
"config": {
|
|
1786
|
+
"jobTitles": ["Sales Development Representative", "Business Development Representative", "SDR", "BDR"],
|
|
1787
|
+
"keywords": ["outbound", "prospecting", "cold email", "cold calling"],
|
|
1788
|
+
"remoteOnly": False,
|
|
1789
|
+
"lookbackWindow": "24h",
|
|
1790
|
+
},
|
|
1791
|
+
}
|
|
1792
|
+
],
|
|
1793
|
+
"schedule": {
|
|
1794
|
+
"timezone": "America/New_York",
|
|
1795
|
+
"timeOfDay": "09:00",
|
|
1796
|
+
"frequency": "daily",
|
|
1797
|
+
"days": "weekdays",
|
|
1798
|
+
},
|
|
1799
|
+
"autoFindEmail": True,
|
|
1800
|
+
"autoCreateLeadMode": "qualified_only",
|
|
1801
|
+
"autoSequenceId": "<SEQUENCE_ID>",
|
|
1802
|
+
"status": "ACTIVE",
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
def _sequence_task_query_payload() -> Dict[str, Any]:
|
|
1807
|
+
return {
|
|
1808
|
+
"filters": [
|
|
1809
|
+
{"field": "sequence_id", "operator": "eq", "value": "<SEQUENCE_ID>"},
|
|
1810
|
+
{"field": "assigned_to", "operator": "eq", "value": "<USER_ID>"},
|
|
1811
|
+
{"field": "task_status", "operator": "eq", "value": "pending"},
|
|
1812
|
+
],
|
|
1813
|
+
"sort": {"field": "due_date", "direction": "asc"},
|
|
1814
|
+
"include_skipped": False,
|
|
1815
|
+
"include_total_count": True,
|
|
1816
|
+
"include_research_values": True,
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
def _workflow_scaffold_agent_to_sequence() -> Dict[str, Any]:
|
|
1821
|
+
artifacts = [
|
|
1822
|
+
_workflow_artifact(
|
|
1823
|
+
step=1,
|
|
1824
|
+
kind="agent_payload",
|
|
1825
|
+
provider="agents",
|
|
1826
|
+
filename="01-agent-to-sequence.json",
|
|
1827
|
+
payload=_agent_to_sequence_payload(),
|
|
1828
|
+
table_scope="agent",
|
|
1829
|
+
notes=[
|
|
1830
|
+
"Use this payload when you want explicit signal/persona config instead of --generate.",
|
|
1831
|
+
"Keep targetType=LEADS and autoCreateLeadMode=qualified_only for sequence handoffs unless the user asks otherwise.",
|
|
1832
|
+
],
|
|
1833
|
+
),
|
|
1834
|
+
_workflow_artifact(
|
|
1835
|
+
step=2,
|
|
1836
|
+
kind="task_query",
|
|
1837
|
+
provider="tasks",
|
|
1838
|
+
filename="02-sequence-task-query.json",
|
|
1839
|
+
payload=_sequence_task_query_payload(),
|
|
1840
|
+
table_scope="sequence",
|
|
1841
|
+
notes=["Set SEQUENCE_ID and USER_ID before querying the visible tasks created by the run."],
|
|
1842
|
+
),
|
|
1843
|
+
]
|
|
1844
|
+
return {
|
|
1845
|
+
"artifacts": artifacts,
|
|
1846
|
+
"commands": [
|
|
1847
|
+
"autotouch auth status --output json",
|
|
1848
|
+
"autotouch agents signals --target LEADS --output json",
|
|
1849
|
+
"autotouch sequences list --status ACTIVE --include-stats --output json",
|
|
1850
|
+
"autotouch sequences get --sequence-id <SEQUENCE_ID> --output json",
|
|
1851
|
+
"autotouch agents create --name '<AGENT_NAME>' --target LEADS --assigned-user <USER_ID> --generate --auto-find-email --auto-create-lead-mode qualified_only --auto-sequence-id <SEQUENCE_ID> --status ACTIVE --output json",
|
|
1852
|
+
"autotouch agents update <AGENT_ID> --assigned-user <USER_ID> --auto-find-email true --auto-create-lead-mode qualified_only --auto-sequence-id <SEQUENCE_ID> --status ACTIVE --output json",
|
|
1853
|
+
"autotouch agents watch <AGENT_ID> --interval 10 --max-wait 900 --output json",
|
|
1854
|
+
"autotouch agents runs <AGENT_ID> --limit 5 --output json",
|
|
1855
|
+
"autotouch sequences stats --sequence-id <SEQUENCE_ID> --output json",
|
|
1856
|
+
"autotouch tasks query --data-file 02-sequence-task-query.json --output json",
|
|
1857
|
+
],
|
|
1858
|
+
"notes": [
|
|
1859
|
+
"Use an existing ACTIVE Autotouch Sequence. The sequence's own step settings control manual review versus automated execution.",
|
|
1860
|
+
"For demos, prefer manual-review or AI-draft manual sequence steps so the created tasks are visible before any send/execute action.",
|
|
1861
|
+
"Use the --generate create command for a fast demo path, or edit 01-agent-to-sequence.json when the signal/persona config must be deterministic.",
|
|
1862
|
+
"Do not default to LinkedIn signals unless the user asks for LinkedIn or the signal catalog indicates that LinkedIn is connected and appropriate.",
|
|
1863
|
+
],
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
|
|
1762
1867
|
def _workflow_scaffold_company_table_to_people() -> Dict[str, Any]:
|
|
1763
1868
|
artifacts = [
|
|
1764
1869
|
_workflow_artifact(
|
|
@@ -1874,7 +1979,7 @@ def _workflow_scaffold_signal_outreach() -> Dict[str, Any]:
|
|
|
1874
1979
|
"autotouch agents --help",
|
|
1875
1980
|
"autotouch agents generate-persona --target LEADS --output json",
|
|
1876
1981
|
"autotouch agents create --help",
|
|
1877
|
-
"autotouch workflows scaffold --type
|
|
1982
|
+
"autotouch workflows scaffold --type agent-to-sequence --out-dir sequence-handoff",
|
|
1878
1983
|
"autotouch workflows scaffold --type table-to-outreach --out-dir outreach-handoff",
|
|
1879
1984
|
],
|
|
1880
1985
|
"notes": [
|
|
@@ -2260,6 +2365,7 @@ def _workflow_scaffold_bundle(workflow_type: str) -> Dict[str, Any]:
|
|
|
2260
2365
|
"company-table-to-people": _workflow_scaffold_company_table_to_people,
|
|
2261
2366
|
"table-to-outreach": _workflow_scaffold_table_to_outreach,
|
|
2262
2367
|
"research-to-sequence": _workflow_scaffold_research_to_sequence,
|
|
2368
|
+
"agent-to-sequence": _workflow_scaffold_agent_to_sequence,
|
|
2263
2369
|
"account-research": _workflow_scaffold_account_research,
|
|
2264
2370
|
"signal-outreach": _workflow_scaffold_signal_outreach,
|
|
2265
2371
|
"website-visitors": _workflow_scaffold_website_visitors,
|
|
@@ -97,6 +97,33 @@ _GOAL_WORKFLOW_BLUEPRINTS: Dict[str, Dict[str, Any]] = {
|
|
|
97
97
|
{"provider": "to_sequence", "purpose": "enroll Leads into an active sequence and assign generated tasks"},
|
|
98
98
|
],
|
|
99
99
|
},
|
|
100
|
+
"agent-to-sequence": {
|
|
101
|
+
"goal": "Run a lead-target scheduled agent, create qualified Leads, and enroll them into an active Autotouch Sequence.",
|
|
102
|
+
"use_case": "scheduled_agent_sequence_handoff",
|
|
103
|
+
"supported_starting_points": ["scheduled_agent", "signal_catalog", "active_sequence"],
|
|
104
|
+
"recommended_when": [
|
|
105
|
+
"the user wants Autotouch to find signal-qualified people and create visible sequence tasks",
|
|
106
|
+
"the destination is an Autotouch Sequence rather than Instantly, Smartlead, or an external CRM",
|
|
107
|
+
"the demo or workflow should show agent discovery, lead sync, sequence enrollment, and task inspection end to end",
|
|
108
|
+
],
|
|
109
|
+
"default_safety": {
|
|
110
|
+
"target_type": "LEADS",
|
|
111
|
+
"auto_create_lead_mode": "qualified_only",
|
|
112
|
+
"assigned_user_required": True,
|
|
113
|
+
"sequence_must_be_active": True,
|
|
114
|
+
"ai_draft_steps": "manual_review",
|
|
115
|
+
"skip_active_sequence_conflicts": True,
|
|
116
|
+
"sample_first": True,
|
|
117
|
+
},
|
|
118
|
+
"steps": [
|
|
119
|
+
{"provider": "auth", "purpose": "confirm API key, organization, user, and remaining credits"},
|
|
120
|
+
{"provider": "agents.signals", "purpose": "list lead-compatible signal packs for this organization"},
|
|
121
|
+
{"provider": "sequences", "purpose": "choose an existing ACTIVE sequence with manual-review tasks for demos"},
|
|
122
|
+
{"provider": "agents", "purpose": "create or update a LEADS agent with auto email, qualified-only lead creation, assignee, and autoSequenceId"},
|
|
123
|
+
{"provider": "agents.watch", "purpose": "run the agent and wait for a terminal run state"},
|
|
124
|
+
{"provider": "sequences|tasks", "purpose": "inspect sequence stats and visible assigned tasks"},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
100
127
|
"account-research": {
|
|
101
128
|
"goal": "Research accounts for rep enablement, optionally discover leads, and hand off to manual AI-draft sequences.",
|
|
102
129
|
"use_case": "rep_enablement",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.102
|
|
4
4
|
Summary: Autotouch Smart Table CLI
|
|
5
5
|
Project-URL: Homepage, https://app.autotouch.ai
|
|
6
6
|
Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
|
|
@@ -91,6 +91,11 @@ autotouch auth bootstrap \
|
|
|
91
91
|
autotouch auth check
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
+
Demo accounts:
|
|
95
|
+
|
|
96
|
+
- For a brand-new demo org plus developer key, use `autotouch auth bootstrap` as shown above.
|
|
97
|
+
- For a demo login inside an existing seeded demo org, create the org with `apps/api/scripts/create_demo_org.py`, then add the user through the invite/register flow in `docs/operations/demo-accounts.md`.
|
|
98
|
+
|
|
94
99
|
Config precedence:
|
|
95
100
|
- Explicit flags win over environment variables.
|
|
96
101
|
- Environment variables win over saved config.
|
|
@@ -183,7 +188,7 @@ For structured company builds, start with industry IDs plus geo/company-size fil
|
|
|
183
188
|
|
|
184
189
|
For account-first prospecting from LinkedIn/Sales Navigator, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use Exa company search as a default pre-step for every LinkedIn list build; use it when the user's target is genuinely semantic, niche, competitor-based, or not meant to be LinkedIn-sourced.
|
|
185
190
|
|
|
186
|
-
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. See the agent playbook for the full source-table
|
|
191
|
+
Use `autotouch agents ...` for recurring signal-based discovery. Scheduled agents support `--target ACCOUNTS` for company/account output and `--target LEADS` for people output. Every agent writes a source/signal table for the evidence it used; lead agents then write `candidate_research.candidates[]` on source rows and list-sync those candidates into the lead/candidate output table. LinkedIn engagement lead agents screen all harvested engagers by headline/title before company resolution and final lead scoring; company agents can keep matches in review or auto-promote qualified matches into the Companies workspace. See the agent playbook for the full source-table, candidate-sync, and company-promotion contract.
|
|
187
192
|
|
|
188
193
|
## Workflow Plans
|
|
189
194
|
|
|
@@ -198,7 +203,7 @@ discover -> plan -> scaffold -> run primitives -> inspect
|
|
|
198
203
|
- `autotouch workflows scaffold --type <TYPE> --out-dir <DIR>` writes payload files and a command runbook.
|
|
199
204
|
- `autotouch columns recipe` and `autotouch sequences recipe` remain leaf-level templates.
|
|
200
205
|
|
|
201
|
-
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
206
|
+
Goal-level workflow types include `bulk-outreach`, `company-table-to-people`, `table-to-outreach`, `research-to-sequence`, `agent-to-sequence`, `account-research`, `signal-outreach`, `website-visitors`, and `list-build-to-table`. These keep CRM, outreach providers, Autotouch Leads, Autotouch Sequences, scheduled agents, webhooks, visitor sources, and external intent sources as sources/destinations inside one organized workflow layer instead of creating one-off top-level commands.
|
|
202
207
|
|
|
203
208
|
## Sources And Destinations
|
|
204
209
|
|
|
@@ -268,10 +273,11 @@ For automation or agent-driven setup, use:
|
|
|
268
273
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
269
274
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
270
275
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
271
|
-
- `autotouch --version` should be `0.2.
|
|
276
|
+
- `autotouch --version` should be `0.2.102` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, the cleaned single LinkedIn-sourced list-build path, Exa Company Search up to 100 results, scheduled agent `--target ACCOUNTS|LEADS`, `agents signals --target`, the `agent-to-sequence` workflow scaffold, paced HTTP Request column contracts, branch-aware LinkedIn sequence recipes, real agent soft-delete with associated-table handling, research-table sequence handoff assignee and active-sequence-conflict guard config, backend-owned directional source/destination helpers, goal-level workflow plans, and website visitor/external intent webhook workflow guidance
|
|
272
277
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
273
278
|
- `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
|
|
274
279
|
- `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
|
|
280
|
+
- `autotouch workflows plan --type agent-to-sequence` and `autotouch workflows scaffold --type agent-to-sequence --out-dir workflow` for scheduled agent discovery into Autotouch Sequence tasks
|
|
275
281
|
- `autotouch workflows plan --type website-visitors` and `autotouch workflows scaffold --type website-visitors --out-dir workflow` for website visitor or external intent provider webhook workflows
|
|
276
282
|
- `autotouch integrations recipe --type from_crm --provider hubspot` for CRM-to-research-table imports
|
|
277
283
|
- `autotouch columns recipe --type to_crm|to_outreach|to_leads|to_sequence` for research-table destination workflows
|
|
@@ -1017,12 +1017,14 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
|
|
|
1017
1017
|
"sequenceId": "<SEQUENCE_ID>",
|
|
1018
1018
|
"sourceLeadColumn": "sync_to_leads",
|
|
1019
1019
|
"assignedToUserId": "<USER_ID>",
|
|
1020
|
+
"skipActiveSequenceConflicts": True,
|
|
1020
1021
|
},
|
|
1021
1022
|
},
|
|
1022
1023
|
recipe_notes=(
|
|
1023
1024
|
"sourceLeadColumn should reference the source column key that stores lead IDs (for example sync_to_leads), not the provider name add_to_crm.",
|
|
1024
1025
|
"Set sequenceId to the target workflow sequence ID.",
|
|
1025
1026
|
"Set assignedToUserId to choose who owns the generated sequence tasks.",
|
|
1027
|
+
"skipActiveSequenceConflicts defaults to true for table-driven sequence handoffs so people already active in another sequence are skipped. Set it false only when the user explicitly wants parallel sequence enrollment.",
|
|
1026
1028
|
"The target sequence must already be ACTIVE for real enrollment.",
|
|
1027
1029
|
"Common tail order after contact rows or lead IDs exist is email_finder -> Sync to Leads (`add_to_crm`) -> create/activate sequence -> add_to_sequence.",
|
|
1028
1030
|
"Creating add_to_sequence after lead IDs already exist does not replay those older updates; run add_to_sequence explicitly or rerun the lead-id source column.",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|