autotouch-cli 0.2.101__tar.gz → 0.2.103__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.
Files changed (58) hide show
  1. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/PKG-INFO +10 -4
  2. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/README.md +9 -3
  3. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/agents.py +33 -3
  4. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/data/CLI_REFERENCE.md +16 -12
  5. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/data/cli-manifest.json +39 -10
  6. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/parser.py +1 -1
  7. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/templates.py +105 -1
  8. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/workflows/registry.py +28 -0
  9. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/PKG-INFO +10 -4
  10. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/pyproject.toml +1 -1
  11. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/MANIFEST.in +0 -0
  12. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/__init__.py +0 -0
  13. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/cli.py +0 -0
  14. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/cli_contracts.py +0 -0
  15. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/__init__.py +0 -0
  16. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/auth.py +0 -0
  17. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/cells.py +0 -0
  18. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/columns.py +0 -0
  19. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/integrations.py +0 -0
  20. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/jobs.py +0 -0
  21. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/leads.py +0 -0
  22. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/linkedin.py +0 -0
  23. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/list_build.py +0 -0
  24. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/prompts.py +0 -0
  25. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/rows.py +0 -0
  26. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/search.py +0 -0
  27. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/sequences.py +0 -0
  28. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/tables.py +0 -0
  29. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/tasks.py +0 -0
  30. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/webhooks.py +0 -0
  31. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/commands/workspace_secrets.py +0 -0
  32. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/__init__.py +0 -0
  33. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/auth.py +0 -0
  34. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/config.py +0 -0
  35. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/csv_import.py +0 -0
  36. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/http.py +0 -0
  37. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/io.py +0 -0
  38. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/output.py +0 -0
  39. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/polling.py +0 -0
  40. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/run.py +0 -0
  41. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/core/validation.py +0 -0
  42. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/exceptions.py +0 -0
  43. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/mongo_status.py +0 -0
  44. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/parser_groups.py +0 -0
  45. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/sequence_support.py +0 -0
  46. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli/workflows/__init__.py +0 -0
  47. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/SOURCES.txt +0 -0
  48. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/dependency_links.txt +0 -0
  49. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/entry_points.txt +0 -0
  50. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/requires.txt +0 -0
  51. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_cli.egg-info/top_level.txt +0 -0
  52. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/__init__.py +0 -0
  53. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/linkedin_contract.py +0 -0
  54. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/linkedin_filters.py +0 -0
  55. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/list_build_contract.py +0 -0
  56. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/provider_registry.py +0 -0
  57. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/autotouch_shared/search_contract.py +0 -0
  58. {autotouch_cli-0.2.101 → autotouch_cli-0.2.103}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.101
3
+ Version: 0.2.103
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 and candidate-sync contract.
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.101` 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`, 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
276
+ - `autotouch --version` should be `0.2.103` 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, website visitor/external intent webhook workflow guidance, and create-time agent assignment defaults
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 and candidate-sync contract.
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.101` 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`, 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
251
+ - `autotouch --version` should be `0.2.103` 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, website visitor/external intent webhook workflow guidance, and create-time agent assignment defaults
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
@@ -150,6 +150,8 @@ def cmd_agents_create(args: argparse.Namespace, *, runtime: AgentCommandRuntime)
150
150
  context="agent",
151
151
  default={},
152
152
  )
153
+ if getattr(args, "assigned_user", None):
154
+ payload["assignedUserId"] = args.assigned_user
153
155
  else:
154
156
  payload: Dict[str, Any] = {}
155
157
  if args.name:
@@ -293,10 +295,14 @@ def cmd_agents_update(args: argparse.Namespace, *, runtime: AgentCommandRuntime)
293
295
  context="agent",
294
296
  default={},
295
297
  )
298
+ if getattr(args, "assigned_user", None):
299
+ payload["assignedUserId"] = args.assigned_user
296
300
  else:
297
301
  payload: Dict[str, Any] = {}
298
302
  if getattr(args, "name", None):
299
303
  payload["name"] = args.name
304
+ if getattr(args, "assigned_user", None):
305
+ payload["assignedUserId"] = args.assigned_user
300
306
  if getattr(args, "status", None):
301
307
  payload["status"] = args.status
302
308
  if getattr(args, "auto_find_email", None) is not None:
@@ -548,10 +554,15 @@ def cmd_agents_generate_job_signal(args: argparse.Namespace, *, runtime: AgentCo
548
554
 
549
555
  def cmd_agents_signals(args: argparse.Namespace, *, runtime: AgentCommandRuntime) -> None:
550
556
  token = runtime.resolve_token(args.token, required=True)
557
+ params = None
558
+ target = str(getattr(args, "target", "") or "").strip()
559
+ if target:
560
+ params = {"targetType": target}
551
561
  data = runtime.request_api(
552
562
  "GET", "/api/agents/skill-packs",
553
563
  base_url=args.base_url, token=token,
554
564
  use_x_api_key=args.use_x_api_key,
565
+ params=params,
555
566
  timeout=args.timeout, verbose=args.verbose,
556
567
  )
557
568
  runtime.print_json(data, args.compact)
@@ -586,7 +597,14 @@ def register_agents_subcommands(
586
597
  pac = agents_sub.add_parser("create", help="Create a new agent")
587
598
  pac.add_argument("--name", help="Agent name")
588
599
  pac.add_argument("--target", choices=AGENT_TARGET_CHOICES, help="Target type")
589
- pac.add_argument("--assigned-user", dest="assigned_user", help="Assigned user ID")
600
+ pac.add_argument(
601
+ "--assigned-user",
602
+ dest="assigned_user",
603
+ help=(
604
+ "Assigned user ID. Optional on create; if omitted, the API resolves "
605
+ "a real active user in the target organization."
606
+ ),
607
+ )
590
608
  pac.add_argument("--schedule-time", dest="schedule_time", help="Time of day (HH:MM) — used by daily/weekly")
591
609
  pac.add_argument("--schedule-tz", dest="schedule_tz", help="Timezone (default: UTC)")
592
610
  pac.add_argument(
@@ -631,7 +649,10 @@ def register_agents_subcommands(
631
649
  pac.add_argument(
632
650
  "--auto-sequence-id",
633
651
  dest="auto_sequence_id",
634
- help="Sequence ID — discovered leads get auto-enrolled. Triggers outreach automatically.",
652
+ help=(
653
+ "Sequence ID — enroll discovered leads after lead sync; sequence step settings control "
654
+ "manual vs automated execution."
655
+ ),
635
656
  )
636
657
  pac.add_argument("--status", choices=["DRAFT", "ACTIVE", "PAUSED"], help="Initial status")
637
658
  pac.add_argument("--from-file", dest="from_file", help="Path to JSON payload file")
@@ -643,6 +664,11 @@ def register_agents_subcommands(
643
664
  pau = agents_sub.add_parser("update", help="Update an existing agent")
644
665
  pau.add_argument("agent_id", help="Agent ID")
645
666
  pau.add_argument("--name", help="New agent name")
667
+ pau.add_argument(
668
+ "--assigned-user",
669
+ dest="assigned_user",
670
+ help="Assigned user ID. Use this to move ownership or force a specific user-scoped connected context.",
671
+ )
646
672
  pau.add_argument("--status", choices=["DRAFT", "ACTIVE", "PAUSED"], help="New status")
647
673
  pau.add_argument("--auto-find-email", dest="auto_find_email", type=_bool_arg, default=None, help="Enable/disable auto email finder")
648
674
  pau.add_argument("--auto-find-phone", dest="auto_find_phone", type=_bool_arg, default=None, help="Enable/disable auto phone finder")
@@ -656,7 +682,10 @@ def register_agents_subcommands(
656
682
  pau.add_argument(
657
683
  "--auto-sequence-id",
658
684
  dest="auto_sequence_id",
659
- help="Sequence ID for auto-enrollment. Pass empty string to clear.",
685
+ help=(
686
+ "Sequence ID for enrollment after lead sync; sequence step settings control manual vs "
687
+ "automated execution. Pass empty string to clear."
688
+ ),
660
689
  )
661
690
  pau.add_argument("--schedule-time", dest="schedule_time", help="Time of day (HH:MM) — used by daily/weekly")
662
691
  pau.add_argument("--schedule-tz", dest="schedule_tz", help="Timezone")
@@ -765,6 +794,7 @@ def register_agents_subcommands(
765
794
 
766
795
  # -- signals --
767
796
  pass_ = agents_sub.add_parser("signals", help="List available signal skill packs")
797
+ pass_.add_argument("--target", choices=AGENT_TARGET_CHOICES, help="Filter signals to a target type")
768
798
  add_api_common_arguments(pass_)
769
799
  pass_.set_defaults(func=handlers["signals"])
770
800
 
@@ -1,6 +1,6 @@
1
1
  # Autotouch CLI Reference
2
2
 
3
- Generated from the installed parser for `autotouch-cli` `0.2.101`.
3
+ Generated from the installed parser for `autotouch-cli` `0.2.103`.
4
4
  Manifest schema version: `2`.
5
5
 
6
6
  ## Output Modes
@@ -57,7 +57,7 @@ Create a new agent
57
57
  - Options:
58
58
  - `--name` (kind=string): Agent name
59
59
  - `--target` (kind=string; choices=LEADS,ACCOUNTS): Target type
60
- - `--assigned-user` (kind=string): Assigned user ID
60
+ - `--assigned-user` (kind=string): Assigned user ID. Optional on create; if omitted, the API resolves a real active user in the target organization.
61
61
  - `--schedule-time` (kind=string): Time of day (HH:MM) — used by daily/weekly
62
62
  - `--schedule-tz` (kind=string): Timezone (default: UTC)
63
63
  - `--schedule-frequency` (kind=string; choices=hourly,every_6h,every_12h,daily,weekly): Run cadence (default: daily)
@@ -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 get auto-enrolled. Triggers outreach automatically.
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] [--base-url BASE_URL] [--token TOKEN]
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. Use this to move ownership or force a specific user-scoped connected context.
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 auto-enrollment. Pass empty string to clear.
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 research-to-sequence --out-dir workflow`
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.101",
2
+ "version": "0.2.103",
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 research-to-sequence --out-dir workflow"
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"
@@ -35891,7 +35894,7 @@
35891
35894
  {
35892
35895
  "dest": "assigned_user",
35893
35896
  "required": false,
35894
- "help": "Assigned user ID",
35897
+ "help": "Assigned user ID. Optional on create; if omitted, the API resolves a real active user in the target organization.",
35895
35898
  "kind": "string",
35896
35899
  "action": "store",
35897
35900
  "flags": [
@@ -36058,7 +36061,7 @@
36058
36061
  {
36059
36062
  "dest": "auto_sequence_id",
36060
36063
  "required": false,
36061
- "help": "Sequence ID \u2014 discovered leads get auto-enrolled. Triggers outreach automatically.",
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. Use this to move ownership or force a specific user-scoped connected context.",
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 auto-enrollment. Pass empty string to clear.",
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 research-to-sequence --out-dir workflow",
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
 
@@ -1762,6 +1762,109 @@ def _workflow_scaffold_research_to_sequence() -> Dict[str, Any]:
1762
1762
  }
1763
1763
 
1764
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 --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
+ "Pass --assigned-user <USER_ID> on create only when impersonating or when a specific user's connected context matters; otherwise the API assigns a real active user in the target organization.",
1862
+ "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.",
1863
+ "Do not default to LinkedIn signals unless the user asks for LinkedIn or the signal catalog indicates that LinkedIn is connected and appropriate.",
1864
+ ],
1865
+ }
1866
+
1867
+
1765
1868
  def _workflow_scaffold_company_table_to_people() -> Dict[str, Any]:
1766
1869
  artifacts = [
1767
1870
  _workflow_artifact(
@@ -1877,7 +1980,7 @@ def _workflow_scaffold_signal_outreach() -> Dict[str, Any]:
1877
1980
  "autotouch agents --help",
1878
1981
  "autotouch agents generate-persona --target LEADS --output json",
1879
1982
  "autotouch agents create --help",
1880
- "autotouch workflows scaffold --type research-to-sequence --out-dir sequence-handoff",
1983
+ "autotouch workflows scaffold --type agent-to-sequence --out-dir sequence-handoff",
1881
1984
  "autotouch workflows scaffold --type table-to-outreach --out-dir outreach-handoff",
1882
1985
  ],
1883
1986
  "notes": [
@@ -2263,6 +2366,7 @@ def _workflow_scaffold_bundle(workflow_type: str) -> Dict[str, Any]:
2263
2366
  "company-table-to-people": _workflow_scaffold_company_table_to_people,
2264
2367
  "table-to-outreach": _workflow_scaffold_table_to_outreach,
2265
2368
  "research-to-sequence": _workflow_scaffold_research_to_sequence,
2369
+ "agent-to-sequence": _workflow_scaffold_agent_to_sequence,
2266
2370
  "account-research": _workflow_scaffold_account_research,
2267
2371
  "signal-outreach": _workflow_scaffold_signal_outreach,
2268
2372
  "website-visitors": _workflow_scaffold_website_visitors,
@@ -97,6 +97,34 @@ _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": False,
113
+ "assigned_user_default": "api_resolved_active_target_org_user",
114
+ "sequence_must_be_active": True,
115
+ "ai_draft_steps": "manual_review",
116
+ "skip_active_sequence_conflicts": True,
117
+ "sample_first": True,
118
+ },
119
+ "steps": [
120
+ {"provider": "auth", "purpose": "confirm API key, organization, user, and remaining credits"},
121
+ {"provider": "agents.signals", "purpose": "list lead-compatible signal packs for this organization"},
122
+ {"provider": "sequences", "purpose": "choose an existing ACTIVE sequence with manual-review tasks for demos"},
123
+ {"provider": "agents", "purpose": "create or update a LEADS agent with auto email, qualified-only lead creation, optional explicit assignee, and autoSequenceId"},
124
+ {"provider": "agents.watch", "purpose": "run the agent and wait for a terminal run state"},
125
+ {"provider": "sequences|tasks", "purpose": "inspect sequence stats and visible assigned tasks"},
126
+ ],
127
+ },
100
128
  "account-research": {
101
129
  "goal": "Research accounts for rep enablement, optionally discover leads, and hand off to manual AI-draft sequences.",
102
130
  "use_case": "rep_enablement",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.101
3
+ Version: 0.2.103
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 and candidate-sync contract.
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.101` 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`, 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
276
+ - `autotouch --version` should be `0.2.103` 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, website visitor/external intent webhook workflow guidance, and create-time agent assignment defaults
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "autotouch-cli"
7
- version = "0.2.101"
7
+ version = "0.2.103"
8
8
  description = "Autotouch Smart Table CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"