autotouch-cli 0.2.104__tar.gz → 0.2.105__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 (59) hide show
  1. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/PKG-INFO +2 -2
  2. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/README.md +1 -1
  3. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/sequences.py +60 -1
  4. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/data/CLI_REFERENCE.md +1 -1
  5. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/data/cli-manifest.json +1 -1
  6. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/PKG-INFO +2 -2
  7. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/pyproject.toml +1 -1
  8. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/MANIFEST.in +0 -0
  9. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/__init__.py +0 -0
  10. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/cli.py +0 -0
  11. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/cli_contracts.py +0 -0
  12. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/__init__.py +0 -0
  13. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/agents.py +0 -0
  14. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/auth.py +0 -0
  15. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/cells.py +0 -0
  16. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/columns.py +0 -0
  17. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/integrations.py +0 -0
  18. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/jobs.py +0 -0
  19. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/leads.py +0 -0
  20. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/linkedin.py +0 -0
  21. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/list_build.py +0 -0
  22. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/prompts.py +0 -0
  23. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/rows.py +0 -0
  24. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/search.py +0 -0
  25. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/tables.py +0 -0
  26. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/tasks.py +0 -0
  27. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/webhooks.py +0 -0
  28. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/workspace_secrets.py +0 -0
  29. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/__init__.py +0 -0
  30. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/auth.py +0 -0
  31. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/config.py +0 -0
  32. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/csv_import.py +0 -0
  33. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/http.py +0 -0
  34. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/io.py +0 -0
  35. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/output.py +0 -0
  36. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/polling.py +0 -0
  37. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/run.py +0 -0
  38. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/validation.py +0 -0
  39. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/exceptions.py +0 -0
  40. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/mongo_status.py +0 -0
  41. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/parser.py +0 -0
  42. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/parser_groups.py +0 -0
  43. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/sequence_support.py +0 -0
  44. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/templates.py +0 -0
  45. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/workflows/__init__.py +0 -0
  46. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/workflows/registry.py +0 -0
  47. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/SOURCES.txt +0 -0
  48. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/dependency_links.txt +0 -0
  49. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/entry_points.txt +0 -0
  50. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/requires.txt +0 -0
  51. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/top_level.txt +0 -0
  52. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/__init__.py +0 -0
  53. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/linkedin_contract.py +0 -0
  54. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/linkedin_filters.py +0 -0
  55. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/list_build_contract.py +0 -0
  56. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/product_lifecycle.py +0 -0
  57. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/provider_registry.py +0 -0
  58. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/search_contract.py +0 -0
  59. {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.104
3
+ Version: 0.2.105
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
@@ -286,7 +286,7 @@ For automation or agent-driven setup, use:
286
286
  - `autotouch cli-manifest --output json` for the local machine-readable command contract
287
287
  - `autotouch cli-reference` for the shipped parser-generated reference
288
288
  - `autotouch capabilities --output json` for provider/workflow contracts
289
- - `autotouch --version` should be `0.2.104` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, and company-page signal configuration guidance
289
+ - `autotouch --version` should be `0.2.105` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, company-page signal configuration guidance, and sequence authoring warnings when AI draft is mixed with fixed templates
290
290
  - `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
291
291
  - `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
292
292
  - `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
@@ -261,7 +261,7 @@ For automation or agent-driven setup, use:
261
261
  - `autotouch cli-manifest --output json` for the local machine-readable command contract
262
262
  - `autotouch cli-reference` for the shipped parser-generated reference
263
263
  - `autotouch capabilities --output json` for provider/workflow contracts
264
- - `autotouch --version` should be `0.2.104` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, and company-page signal configuration guidance
264
+ - `autotouch --version` should be `0.2.105` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, company-page signal configuration guidance, and sequence authoring warnings when AI draft is mixed with fixed templates
265
265
  - `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
266
266
  - `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
267
267
  - `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
@@ -4,7 +4,7 @@ import argparse
4
4
  import json
5
5
  import sys
6
6
  from dataclasses import dataclass
7
- from typing import Any, Callable, Dict, Optional, Sequence
7
+ from typing import Any, Callable, Dict, List, Optional, Sequence
8
8
 
9
9
  from autotouch_cli.exceptions import (
10
10
  AutotouchAPIError,
@@ -92,6 +92,64 @@ def _sequence_shape(sequence: Dict[str, Any]) -> Dict[str, Any]:
92
92
  }
93
93
 
94
94
 
95
+ def _sequence_template_ai_draft_warnings(payload: Optional[Dict[str, Any]]) -> List[Dict[str, Any]]:
96
+ if not isinstance(payload, dict):
97
+ return []
98
+ steps = payload.get("steps")
99
+ if not isinstance(steps, list):
100
+ return []
101
+
102
+ warnings: List[Dict[str, Any]] = []
103
+ for idx, step in enumerate(steps):
104
+ if not isinstance(step, dict) or not bool(step.get("aiDraft")):
105
+ continue
106
+ template_fields = [
107
+ field
108
+ for field in ("subjectTemplate", "bodyTemplate", "scriptTemplate")
109
+ if isinstance(step.get(field), str) and step.get(field, "").strip()
110
+ ]
111
+ if not template_fields:
112
+ continue
113
+
114
+ execution_mode = str(step.get("executionMode") or "").strip().upper()
115
+ if not execution_mode and str(step.get("kind") or "").strip().upper() == "EMAIL":
116
+ execution_mode = str(step.get("emailSendMode") or "").strip().upper()
117
+ automated = execution_mode == "AUTOMATED"
118
+ warnings.append(
119
+ {
120
+ "code": "automated_ai_draft_with_template" if automated else "ai_draft_with_template",
121
+ "step_index": idx,
122
+ "step_id": step.get("id"),
123
+ "step_kind": step.get("kind"),
124
+ "execution_mode": execution_mode or None,
125
+ "template_fields": template_fields,
126
+ "message": (
127
+ "This step has aiDraft=true plus template fields. AI will generate task content from context; "
128
+ "the template fields are guidance/context and are not guaranteed to be sent exactly. "
129
+ "For deterministic variable-filled template sending, set aiDraft=false. "
130
+ "For AI-personalized review, keep aiDraft=true and use executionMode=MANUAL."
131
+ ),
132
+ }
133
+ )
134
+ return warnings
135
+
136
+
137
+ def _attach_sequence_authoring_warnings(output: Dict[str, Any], payload: Optional[Dict[str, Any]]) -> Dict[str, Any]:
138
+ warnings = _sequence_template_ai_draft_warnings(payload)
139
+ if not warnings:
140
+ return output
141
+ enriched = dict(output)
142
+ enriched["sequence_authoring_warnings"] = warnings
143
+ existing = enriched.get("warnings")
144
+ if isinstance(existing, list):
145
+ enriched["warnings"] = [*existing, *warnings]
146
+ elif existing:
147
+ enriched["warnings"] = [existing, *warnings]
148
+ else:
149
+ enriched["warnings"] = warnings
150
+ return enriched
151
+
152
+
95
153
  def _fetch_sequence_readback(
96
154
  sequence_id: str,
97
155
  args: argparse.Namespace,
@@ -123,6 +181,7 @@ def _sequence_mutation_output(
123
181
  sequence_id: Optional[str] = None,
124
182
  ) -> Dict[str, Any]:
125
183
  output = dict(mutation_result)
184
+ output = _attach_sequence_authoring_warnings(output, submitted_payload)
126
185
  submitted_shape = _sequence_shape(submitted_payload) if isinstance(submitted_payload, dict) else None
127
186
  if submitted_shape:
128
187
  output["submitted_shape"] = submitted_shape
@@ -1,6 +1,6 @@
1
1
  # Autotouch CLI Reference
2
2
 
3
- Generated from the installed parser for `autotouch-cli` `0.2.104`.
3
+ Generated from the installed parser for `autotouch-cli` `0.2.105`.
4
4
  Manifest schema version: `2`.
5
5
 
6
6
  ## Output Modes
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.2.104",
2
+ "version": "0.2.105",
3
3
  "manifest_schema_version": 2,
4
4
  "entry_points": {
5
5
  "autotouch": "autotouch_cli.cli:main",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.104
3
+ Version: 0.2.105
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
@@ -286,7 +286,7 @@ For automation or agent-driven setup, use:
286
286
  - `autotouch cli-manifest --output json` for the local machine-readable command contract
287
287
  - `autotouch cli-reference` for the shipped parser-generated reference
288
288
  - `autotouch capabilities --output json` for provider/workflow contracts
289
- - `autotouch --version` should be `0.2.104` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, and company-page signal configuration guidance
289
+ - `autotouch --version` should be `0.2.105` 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` and `agent-to-leads` workflow scaffolds, 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, create-time agent assignment defaults, company-page signal configuration guidance, and sequence authoring warnings when AI draft is mixed with fixed templates
290
290
  - `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
291
291
  - `autotouch integrations list` and `autotouch integrations status --provider <provider>` before choosing source/destination workflows
292
292
  - `autotouch workflows plan --type bulk-outreach` and `autotouch workflows scaffold --type bulk-outreach --out-dir workflow` for goal-level workflow planning
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "autotouch-cli"
7
- version = "0.2.104"
7
+ version = "0.2.105"
8
8
  description = "Autotouch Smart Table CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"