autotouch-cli 0.2.85__tar.gz → 0.2.86__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.85 → autotouch_cli-0.2.86}/PKG-INFO +1 -1
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/cli.py +1 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/columns.py +76 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/data/CLI_REFERENCE.md +7 -1
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/data/cli-manifest.json +51 -4
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/templates.py +28 -2
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/PKG-INFO +1 -1
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/provider_registry.py +2 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/pyproject.toml +1 -1
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/MANIFEST.in +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/README.md +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/cli_contracts.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/__init__.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/agents.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/auth.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/cells.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/jobs.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/leads.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/linkedin.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/list_build.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/prompts.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/rows.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/search.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/sequences.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/tables.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/tasks.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/webhooks.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/workspace_secrets.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/__init__.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/auth.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/config.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/csv_import.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/http.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/io.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/output.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/polling.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/run.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/validation.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/exceptions.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/mongo_status.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/parser.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/parser_groups.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/sequence_support.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/SOURCES.txt +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/__init__.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/linkedin_contract.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/linkedin_filters.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/list_build_contract.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/search_contract.py +0 -0
- {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/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.86
|
|
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
|
|
@@ -2398,6 +2398,7 @@ cmd_auth_schema = _bound("auth_schema")
|
|
|
2398
2398
|
cmd_auth_whoami = _bound("auth_whoami")
|
|
2399
2399
|
cmd_cells_get = _bound("cells_get")
|
|
2400
2400
|
cmd_columns_create = _bound("columns_create")
|
|
2401
|
+
cmd_columns_update = _bound("columns_update")
|
|
2401
2402
|
cmd_columns_move = _bound("columns_move")
|
|
2402
2403
|
cmd_columns_projections = _bound("columns_projections")
|
|
2403
2404
|
cmd_columns_run_next = _bound("columns_run_next")
|
|
@@ -7,6 +7,16 @@ from typing import Any, Callable, Dict, Sequence
|
|
|
7
7
|
from autotouch_cli.exceptions import AutotouchCreditError, AutotouchInputError
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
_RESEARCH_MODE_ALIASES = {
|
|
11
|
+
"lite": "lite",
|
|
12
|
+
"light": "lite",
|
|
13
|
+
"quick": "lite",
|
|
14
|
+
"heavy": "heavy",
|
|
15
|
+
"deep": "heavy",
|
|
16
|
+
"thorough": "heavy",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
10
20
|
@dataclass(frozen=True)
|
|
11
21
|
class ColumnCommandRuntime:
|
|
12
22
|
resolve_token: Callable[[str | None, bool], str | None]
|
|
@@ -52,6 +62,54 @@ def _apply_column_position_overrides(
|
|
|
52
62
|
return merged
|
|
53
63
|
|
|
54
64
|
|
|
65
|
+
def _normalize_research_mode_option(value: Any) -> str:
|
|
66
|
+
normalized = str(value or "").strip().lower()
|
|
67
|
+
if normalized in _RESEARCH_MODE_ALIASES:
|
|
68
|
+
return _RESEARCH_MODE_ALIASES[normalized]
|
|
69
|
+
raise AutotouchInputError("--research-mode must be one of: lite, heavy")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _apply_research_mode_overrides(
|
|
73
|
+
payload: Dict[str, Any],
|
|
74
|
+
args: argparse.Namespace,
|
|
75
|
+
*,
|
|
76
|
+
force_agent_on_explicit: bool,
|
|
77
|
+
) -> Dict[str, Any]:
|
|
78
|
+
explicit_value = getattr(args, "research_mode", None)
|
|
79
|
+
config = payload.get("config")
|
|
80
|
+
if not isinstance(config, dict):
|
|
81
|
+
if explicit_value is None:
|
|
82
|
+
return payload
|
|
83
|
+
config = {}
|
|
84
|
+
|
|
85
|
+
current_mode = str(config.get("mode") or "").strip().lower()
|
|
86
|
+
has_research_mode = (
|
|
87
|
+
config.get("researchMode") is not None
|
|
88
|
+
or config.get("research_mode") is not None
|
|
89
|
+
)
|
|
90
|
+
should_default_agent_lite = current_mode == "agent" and not has_research_mode
|
|
91
|
+
should_clean_agent_config = current_mode == "agent" and has_research_mode
|
|
92
|
+
if explicit_value is None and not should_default_agent_lite and not should_clean_agent_config:
|
|
93
|
+
return payload
|
|
94
|
+
|
|
95
|
+
merged = dict(payload)
|
|
96
|
+
next_config = dict(config)
|
|
97
|
+
if explicit_value is not None:
|
|
98
|
+
if force_agent_on_explicit:
|
|
99
|
+
next_config["mode"] = "agent"
|
|
100
|
+
next_config["researchMode"] = _normalize_research_mode_option(explicit_value)
|
|
101
|
+
elif config.get("researchMode") is not None:
|
|
102
|
+
next_config["researchMode"] = _normalize_research_mode_option(config.get("researchMode"))
|
|
103
|
+
elif config.get("research_mode") is not None:
|
|
104
|
+
next_config["researchMode"] = _normalize_research_mode_option(config.get("research_mode"))
|
|
105
|
+
else:
|
|
106
|
+
next_config["researchMode"] = "lite"
|
|
107
|
+
next_config.pop("research_mode", None)
|
|
108
|
+
next_config.pop("lite", None)
|
|
109
|
+
merged["config"] = next_config
|
|
110
|
+
return merged
|
|
111
|
+
|
|
112
|
+
|
|
55
113
|
def _normalize_http_request_test_payload(payload: Dict[str, Any]) -> Dict[str, Any]:
|
|
56
114
|
candidate = payload
|
|
57
115
|
config = payload.get("config")
|
|
@@ -111,6 +169,7 @@ def cmd_columns_create(args: argparse.Namespace, *, runtime: ColumnCommandRuntim
|
|
|
111
169
|
allow_position=True,
|
|
112
170
|
allow_neighbors=True,
|
|
113
171
|
)
|
|
172
|
+
payload = _apply_research_mode_overrides(payload, args, force_agent_on_explicit=True)
|
|
114
173
|
runtime.validate_column_contract_payload_or_exit(payload)
|
|
115
174
|
runtime.validate_add_to_crm_create_payload(payload)
|
|
116
175
|
data = runtime.request_api(
|
|
@@ -156,6 +215,7 @@ def cmd_columns_update(args: argparse.Namespace, *, runtime: ColumnCommandRuntim
|
|
|
156
215
|
allow_position=True,
|
|
157
216
|
allow_neighbors=False,
|
|
158
217
|
)
|
|
218
|
+
payload = _apply_research_mode_overrides(payload, args, force_agent_on_explicit=False)
|
|
159
219
|
runtime.validate_column_contract_payload_or_exit(payload)
|
|
160
220
|
data = runtime.request_api(
|
|
161
221
|
"PATCH",
|
|
@@ -401,6 +461,11 @@ def register_columns_subcommands(
|
|
|
401
461
|
pcc.add_argument("--position", type=float, help="Explicit numeric position override")
|
|
402
462
|
pcc.add_argument("--after-column-id", help="Place the new column after this existing column id")
|
|
403
463
|
pcc.add_argument("--before-column-id", help="Place the new column before this existing column id")
|
|
464
|
+
pcc.add_argument(
|
|
465
|
+
"--research-mode",
|
|
466
|
+
choices=["lite", "heavy"],
|
|
467
|
+
help="For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.",
|
|
468
|
+
)
|
|
404
469
|
add_api_common_arguments(pcc)
|
|
405
470
|
pcc.set_defaults(func=handlers["create"])
|
|
406
471
|
|
|
@@ -417,6 +482,11 @@ def register_columns_subcommands(
|
|
|
417
482
|
pcu.add_argument("--data-json", help="ColumnUpdate payload JSON")
|
|
418
483
|
pcu.add_argument("--data-file", help="ColumnUpdate payload file path")
|
|
419
484
|
pcu.add_argument("--position", type=float, help="Explicit numeric position override")
|
|
485
|
+
pcu.add_argument(
|
|
486
|
+
"--research-mode",
|
|
487
|
+
choices=["lite", "heavy"],
|
|
488
|
+
help="Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.",
|
|
489
|
+
)
|
|
420
490
|
add_api_common_arguments(pcu)
|
|
421
491
|
pcu.set_defaults(func=handlers["update"])
|
|
422
492
|
|
|
@@ -545,6 +615,12 @@ def register_columns_subcommands(
|
|
|
545
615
|
|
|
546
616
|
pcre = col_sub.add_parser("recipe", help="Print copy-ready ColumnCreate payload templates")
|
|
547
617
|
pcre.add_argument("--type", choices=["all", *column_recipe_types], default="all")
|
|
618
|
+
pcre.add_argument(
|
|
619
|
+
"--research-mode",
|
|
620
|
+
choices=["lite", "heavy"],
|
|
621
|
+
default="lite",
|
|
622
|
+
help="Research Agent depth for LLM recipes (default: lite; heavy costs more per row)",
|
|
623
|
+
)
|
|
548
624
|
pcre.add_argument("--out-file", help="Write template JSON to file (single type writes payload only)")
|
|
549
625
|
add_output_formatting_arguments(pcre)
|
|
550
626
|
pcre.set_defaults(func=handlers["recipe"])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Autotouch CLI Reference
|
|
2
2
|
|
|
3
|
-
Generated from the installed parser for `autotouch-cli` `0.2.
|
|
3
|
+
Generated from the installed parser for `autotouch-cli` `0.2.86`.
|
|
4
4
|
Manifest schema version: `2`.
|
|
5
5
|
|
|
6
6
|
## Output Modes
|
|
@@ -1079,6 +1079,7 @@ For llm_enrichment, there are two valid authoring paths:
|
|
|
1079
1079
|
[--data-file DATA_FILE] [--position POSITION]
|
|
1080
1080
|
[--after-column-id AFTER_COLUMN_ID]
|
|
1081
1081
|
[--before-column-id BEFORE_COLUMN_ID]
|
|
1082
|
+
[--research-mode {lite,heavy}]
|
|
1082
1083
|
[--base-url BASE_URL] [--token TOKEN]
|
|
1083
1084
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
1084
1085
|
[--output {json,ndjson,human}] [--compact]
|
|
@@ -1100,6 +1101,7 @@ The runnable prompt is always config.advancedPrompt before execution.
|
|
|
1100
1101
|
- `--position` (kind=number): Explicit numeric position override
|
|
1101
1102
|
- `--after-column-id` (kind=string): Place the new column after this existing column id
|
|
1102
1103
|
- `--before-column-id` (kind=string): Place the new column before this existing column id
|
|
1104
|
+
- `--research-mode` (kind=string; choices=lite,heavy): For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.
|
|
1103
1105
|
- `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
|
|
1104
1106
|
- `--token` (kind=string; sensitive): Developer API key / JWT token
|
|
1105
1107
|
- `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
|
|
@@ -1321,12 +1323,14 @@ Print copy-ready ColumnCreate payload templates
|
|
|
1321
1323
|
- Example:
|
|
1322
1324
|
- `autotouch columns recipe [-h]
|
|
1323
1325
|
[--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]
|
|
1326
|
+
[--research-mode {lite,heavy}]
|
|
1324
1327
|
[--out-file OUT_FILE]
|
|
1325
1328
|
[--output {json,ndjson,human}] [--compact]
|
|
1326
1329
|
[--select SELECT |
|
|
1327
1330
|
--json-pointer JSON_POINTER]`
|
|
1328
1331
|
- Options:
|
|
1329
1332
|
- `--type` (kind=string; choices=all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads; default=all)
|
|
1333
|
+
- `--research-mode` (kind=string; choices=lite,heavy; default=lite): Research Agent depth for LLM recipes (default: lite; heavy costs more per row)
|
|
1330
1334
|
- `--out-file` (kind=file; input=file): Write template JSON to file (single type writes payload only)
|
|
1331
1335
|
- `--output` (kind=string; choices=json,ndjson,human; default=json): Output mode
|
|
1332
1336
|
- `--compact` (kind=boolean; when omitted=False; when present=True): Print compact JSON
|
|
@@ -1538,6 +1542,7 @@ Update a column definition. Nested config keys merge into the existing config, s
|
|
|
1538
1542
|
- `autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID
|
|
1539
1543
|
[--data-json DATA_JSON]
|
|
1540
1544
|
[--data-file DATA_FILE] [--position POSITION]
|
|
1545
|
+
[--research-mode {lite,heavy}]
|
|
1541
1546
|
[--base-url BASE_URL] [--token TOKEN]
|
|
1542
1547
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
1543
1548
|
[--output {json,ndjson,human}] [--compact]
|
|
@@ -1549,6 +1554,7 @@ Update a column definition. Nested config keys merge into the existing config, s
|
|
|
1549
1554
|
- `--data-json` (kind=json; input=json): ColumnUpdate payload JSON
|
|
1550
1555
|
- `--data-file` (kind=file; input=file): ColumnUpdate payload file path
|
|
1551
1556
|
- `--position` (kind=number): Explicit numeric position override
|
|
1557
|
+
- `--research-mode` (kind=string; choices=lite,heavy): Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.
|
|
1552
1558
|
- `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
|
|
1553
1559
|
- `--token` (kind=string; sensitive): Developer API key / JWT token
|
|
1554
1560
|
- `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.86",
|
|
3
3
|
"manifest_schema_version": 2,
|
|
4
4
|
"entry_points": {
|
|
5
5
|
"autotouch": "autotouch_cli.cli:main",
|
|
@@ -14852,6 +14852,21 @@
|
|
|
14852
14852
|
],
|
|
14853
14853
|
"takes_value": true
|
|
14854
14854
|
},
|
|
14855
|
+
{
|
|
14856
|
+
"dest": "research_mode",
|
|
14857
|
+
"required": false,
|
|
14858
|
+
"help": "For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.",
|
|
14859
|
+
"kind": "string",
|
|
14860
|
+
"action": "store",
|
|
14861
|
+
"choices": [
|
|
14862
|
+
"lite",
|
|
14863
|
+
"heavy"
|
|
14864
|
+
],
|
|
14865
|
+
"flags": [
|
|
14866
|
+
"--research-mode"
|
|
14867
|
+
],
|
|
14868
|
+
"takes_value": true
|
|
14869
|
+
},
|
|
14855
14870
|
{
|
|
14856
14871
|
"dest": "base_url",
|
|
14857
14872
|
"required": false,
|
|
@@ -15005,7 +15020,7 @@
|
|
|
15005
15020
|
},
|
|
15006
15021
|
"availability": null,
|
|
15007
15022
|
"examples": [
|
|
15008
|
-
"autotouch columns create [-h] --table-id TABLE_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--after-column-id AFTER_COLUMN_ID]\n [--before-column-id BEFORE_COLUMN_ID]\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]"
|
|
15023
|
+
"autotouch columns create [-h] --table-id TABLE_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--after-column-id AFTER_COLUMN_ID]\n [--before-column-id BEFORE_COLUMN_ID]\n [--research-mode {lite,heavy}]\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]"
|
|
15009
15024
|
],
|
|
15010
15025
|
"stability": "stable",
|
|
15011
15026
|
"handler": "_fn"
|
|
@@ -15084,6 +15099,21 @@
|
|
|
15084
15099
|
],
|
|
15085
15100
|
"takes_value": true
|
|
15086
15101
|
},
|
|
15102
|
+
{
|
|
15103
|
+
"dest": "research_mode",
|
|
15104
|
+
"required": false,
|
|
15105
|
+
"help": "Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.",
|
|
15106
|
+
"kind": "string",
|
|
15107
|
+
"action": "store",
|
|
15108
|
+
"choices": [
|
|
15109
|
+
"lite",
|
|
15110
|
+
"heavy"
|
|
15111
|
+
],
|
|
15112
|
+
"flags": [
|
|
15113
|
+
"--research-mode"
|
|
15114
|
+
],
|
|
15115
|
+
"takes_value": true
|
|
15116
|
+
},
|
|
15087
15117
|
{
|
|
15088
15118
|
"dest": "base_url",
|
|
15089
15119
|
"required": false,
|
|
@@ -15237,7 +15267,7 @@
|
|
|
15237
15267
|
},
|
|
15238
15268
|
"availability": null,
|
|
15239
15269
|
"examples": [
|
|
15240
|
-
"autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\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]"
|
|
15270
|
+
"autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--research-mode {lite,heavy}]\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]"
|
|
15241
15271
|
],
|
|
15242
15272
|
"stability": "stable",
|
|
15243
15273
|
"handler": "_fn"
|
|
@@ -17564,6 +17594,23 @@
|
|
|
17564
17594
|
],
|
|
17565
17595
|
"takes_value": true
|
|
17566
17596
|
},
|
|
17597
|
+
{
|
|
17598
|
+
"dest": "research_mode",
|
|
17599
|
+
"required": false,
|
|
17600
|
+
"help": "Research Agent depth for LLM recipes (default: lite; heavy costs more per row)",
|
|
17601
|
+
"kind": "string",
|
|
17602
|
+
"action": "store",
|
|
17603
|
+
"choices": [
|
|
17604
|
+
"lite",
|
|
17605
|
+
"heavy"
|
|
17606
|
+
],
|
|
17607
|
+
"default_when_omitted": "lite",
|
|
17608
|
+
"default": "lite",
|
|
17609
|
+
"flags": [
|
|
17610
|
+
"--research-mode"
|
|
17611
|
+
],
|
|
17612
|
+
"takes_value": true
|
|
17613
|
+
},
|
|
17567
17614
|
{
|
|
17568
17615
|
"dest": "out_file",
|
|
17569
17616
|
"required": false,
|
|
@@ -17663,7 +17710,7 @@
|
|
|
17663
17710
|
},
|
|
17664
17711
|
"availability": null,
|
|
17665
17712
|
"examples": [
|
|
17666
|
-
"autotouch columns recipe [-h]\n [--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
17713
|
+
"autotouch columns recipe [-h]\n [--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]\n [--research-mode {lite,heavy}]\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
|
|
17667
17714
|
],
|
|
17668
17715
|
"stability": "stable",
|
|
17669
17716
|
"handler": "_fn"
|
|
@@ -917,6 +917,32 @@ def _recipe_payload(recipe_type: str) -> Dict[str, Any]:
|
|
|
917
917
|
return _json_copy(payload)
|
|
918
918
|
|
|
919
919
|
|
|
920
|
+
def _apply_recipe_research_mode(payload: Dict[str, Any], research_mode: Any) -> Dict[str, Any]:
|
|
921
|
+
config = payload.get("config")
|
|
922
|
+
if not isinstance(config, dict):
|
|
923
|
+
return payload
|
|
924
|
+
if str(config.get("mode") or "").strip().lower() != "agent":
|
|
925
|
+
return payload
|
|
926
|
+
mode = str(research_mode or "lite").strip().lower()
|
|
927
|
+
if mode not in {"lite", "heavy"}:
|
|
928
|
+
mode = "lite"
|
|
929
|
+
payload = dict(payload)
|
|
930
|
+
payload["config"] = {
|
|
931
|
+
**config,
|
|
932
|
+
"researchMode": mode,
|
|
933
|
+
}
|
|
934
|
+
payload["config"].pop("research_mode", None)
|
|
935
|
+
payload["config"].pop("lite", None)
|
|
936
|
+
return payload
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
def _recipe_payload_for_args(recipe_type: str, args: argparse.Namespace) -> Dict[str, Any]:
|
|
940
|
+
return _apply_recipe_research_mode(
|
|
941
|
+
_recipe_payload(recipe_type),
|
|
942
|
+
getattr(args, "research_mode", "lite"),
|
|
943
|
+
)
|
|
944
|
+
|
|
945
|
+
|
|
920
946
|
def _sequence_recipe_payload(recipe_type: str) -> Dict[str, Any]:
|
|
921
947
|
payload = SEQUENCE_RECIPES.get(recipe_type)
|
|
922
948
|
if not payload:
|
|
@@ -1639,7 +1665,7 @@ def emit_workflows_scaffold(args: argparse.Namespace, runtime: TemplateRuntime)
|
|
|
1639
1665
|
def emit_columns_recipe(args: argparse.Namespace, runtime: TemplateRuntime) -> None:
|
|
1640
1666
|
selected_type = str(args.type or "all")
|
|
1641
1667
|
if selected_type == "all":
|
|
1642
|
-
recipes = {name:
|
|
1668
|
+
recipes = {name: _recipe_payload_for_args(name, args) for name in COLUMN_RECIPE_TYPES}
|
|
1643
1669
|
output = {
|
|
1644
1670
|
"recipes": recipes,
|
|
1645
1671
|
"notes": COLUMN_RECIPE_NOTES,
|
|
@@ -1662,7 +1688,7 @@ def emit_columns_recipe(args: argparse.Namespace, runtime: TemplateRuntime) -> N
|
|
|
1662
1688
|
runtime.print_json(output, getattr(args, "compact", False))
|
|
1663
1689
|
return
|
|
1664
1690
|
|
|
1665
|
-
payload =
|
|
1691
|
+
payload = _recipe_payload_for_args(selected_type, args)
|
|
1666
1692
|
output_single = {
|
|
1667
1693
|
"type": selected_type,
|
|
1668
1694
|
"payload": payload,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.86
|
|
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
|
|
@@ -378,6 +378,7 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
|
|
|
378
378
|
"config": {
|
|
379
379
|
"instructions": "Research the company in this row and return JSON with icp_fit, summary, and risks.",
|
|
380
380
|
"mode": "agent",
|
|
381
|
+
"researchMode": "lite",
|
|
381
382
|
"temperature": 0.7,
|
|
382
383
|
"promptSource": "generated",
|
|
383
384
|
"useCompanyContext": True,
|
|
@@ -397,6 +398,7 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
|
|
|
397
398
|
"Runtime only injects values for placeholders the prompt explicitly references.",
|
|
398
399
|
"Manual/basic prompts should use explicit placeholders like {{company_name}}, {{domain}}, or {{user_value_proposition}} when those values are needed.",
|
|
399
400
|
"Agent mode is JSON-oriented.",
|
|
401
|
+
"Agent research depth lives in config.researchMode and defaults to lite; set heavy only when the broader 2-credit research pass is needed.",
|
|
400
402
|
"Basic mode can be text or JSON; JSON requires dataType=json.",
|
|
401
403
|
),
|
|
402
404
|
column_type={
|
|
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
|