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.
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/PKG-INFO +2 -2
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/README.md +1 -1
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/sequences.py +60 -1
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/data/CLI_REFERENCE.md +1 -1
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/data/cli-manifest.json +1 -1
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/PKG-INFO +2 -2
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/pyproject.toml +1 -1
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/MANIFEST.in +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/cli.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/cli_contracts.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/__init__.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/agents.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/auth.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/cells.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/columns.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/integrations.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/jobs.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/leads.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/linkedin.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/list_build.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/prompts.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/rows.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/search.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/tables.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/tasks.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/webhooks.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/commands/workspace_secrets.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/__init__.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/auth.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/config.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/csv_import.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/http.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/io.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/output.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/polling.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/run.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/core/validation.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/exceptions.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/mongo_status.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/parser.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/parser_groups.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/sequence_support.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/templates.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/workflows/__init__.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli/workflows/registry.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/SOURCES.txt +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/__init__.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/linkedin_contract.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/linkedin_filters.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/list_build_contract.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/product_lifecycle.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/provider_registry.py +0 -0
- {autotouch_cli-0.2.104 → autotouch_cli-0.2.105}/autotouch_shared/search_contract.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
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.
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|